Привет У меня есть этот REST услугиDisambiguation в ASP.NET WebAPI маршрутизации с помощью Action
- GET админ/delegateduser
- GET админ/delegateduser/идентификатор
- GET delegateduser
мне удастся конфигурирование маршрута с этим отображением:
config.Routes.MapHttpRoute(
name: "ActionApiWithId",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
И это контроллеры
public class AdminController : ApiController
{
// GET api/admin/delegatedusers
[ActionName("delegatedusers")]
public IEnumerable<x> Get()
{
}
// GET api/delegatedusers/<userid>
[ActionName("delegatedusers")]
public x Get(String id)
{
}
}
public class DelegatedUsersController : ApiController
{
public x Get()
{
}
}
Проблема заключается в том, что я могу добавить новый метод, который не должным образом решен. Метод
- УДАЛИТЬ enrollrequest/идентификатор
Используя это отображение и контроллер
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
public class EnrollRequestController : ApiController
{
/// DELETE api/enrollrequest/<id>
public void Delete(String id)
{
}
}
Если я поставил DefaultApi routMapping на верхней части файла WebApiConfig этот новый метод разрешен, но GET admin/delegateduser нет. Таким образом, похоже, что эти два метода конфликтуют с разрешениями URL.
Каким будет правильный способ сопоставить методы? Может быть, все должно быть проще, и я стал слишком сложным ....
Любая помощь приветствуется.
Заранее спасибо.
Почему HttpMethod не указан для конечных точек ([HttpDelete], [HttpPost], [HttpGet], [HttpPut])? Считаете ли вы использование [AttributeRouting] (http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2)? – boosts
Hi boosts. Теоретически метод не нужно указывать, поскольку имя метода начинается с Get, Delete. В любом случае я уже пытался указать его без изменений. Я использую Web API 1, поэтому я боюсь, что AttributeRouting недоступен. –