Я хотел бы использовать WebAPI подвергать иерархическую структуру ключ-значение данных, как это:Неограниченные иерархические маршруты
http://www.whatever.com/api/root/level1/level2/leveln
Возможно ли это с WebAPI? И если да, то как?
Я хотел бы использовать WebAPI подвергать иерархическую структуру ключ-значение данных, как это:Неограниченные иерархические маршруты
http://www.whatever.com/api/root/level1/level2/leveln
Возможно ли это с WebAPI? И если да, то как?
WebApi может отображать почти любой URI, который вам нравится, - это сводится к тому, как вы настраиваете маршруты и как интерпретируете аргументы метода, как только они были извлечены из URL-адреса.
Чтобы отобразить неограниченный иерархический маршрут, я сопоставлял все после /api/root/
с одной переменной, а затем явно анализировал и интерпретировал этот метод в пользовательской логике вашего контроллера или выделенный сервис.
Хитрость, имеющий матч включают прямую косую черту, чтобы добавить *
в начале:
config.Routes.MapHttpRoute(
name: "KeyValueHierarchy",
routeTemplate: "api/test/root/{*keyLevels}",
defaults: new { controller = "Hierarchy" }
);
Затем в контроллере
public class HierarchyController : ApiController
{
public IHttpActionResult Get(string keyLevels)
{
var keys = keyLevels.Split('/');
// ... do stuff with your keys
return Ok(keys);
}
}
Быстрый тест:
GET /api/test/root/foo/5/bar/10/foobar
возвращение:
<ArrayOfstring xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<string>foo</string>
<string>5</string>
<string>bar</string>
<string>10</string>
<string>foobar</string>
</ArrayOfstring>
да возможно :) –
Спасибо, очень полезно: D (вопрос отредактирован) – ConditionRacer