Я пытаюсь выяснить, как сделать маршрутизацию для следующего контроллера Web API:Web API маршрутизации с несколькими параметрами
public class MyController : ApiController
{
// POST api/MyController/GetAllRows/userName/tableName
[HttpPost]
public List<MyRows> GetAllRows(string userName, string tableName)
{
...
}
// POST api/MyController/GetRowsOfType/userName/tableName/rowType
[HttpPost]
public List<MyRows> GetRowsOfType(string userName, string tableName, string rowType)
{
...
}
}
На данный момент я использую этот маршрут для URL-адресов:
routes.MapHttpRoute("AllRows", "api/{controller}/{action}/{userName}/{tableName}",
new
{
userName= UrlParameter.Optional,
tableName = UrlParameter.Optional
});
routes.MapHttpRoute("RowsByType", "api/{controller}/{action}/{userName}/{tableName}/{rowType}",
new
{
userName= UrlParameter.Optional,
tableName = UrlParameter.Optional,
rowType= UrlParameter.Optional
});
, но в настоящий момент работает только первый метод (с двумя параметрами). Я нахожусь на правильных строках, или я получил неправильный формат URL или маршрутизацию? Маршрутизация кажется черной магией для меня ...
как можно указать параметр, который не является факультативным? Я хочу, чтобы первый был необходим, а второй - как дополнительный? – Zapnologica
Маршрутизация просто более болезненна, ИМО делает это в webapiconfig, см. Мой ответ на маршрутизацию атрибутов с помощью маршрута –