GET Request Routing
У меня возникают проблемы с маршрутизацией запросов GET на контроллере API, проблема в том, что мне нужно иметь 3 отдельных метода для GET:
public IEnumerable<MyViewModel> Get()
public virtual MyViewModel Get(int id)
public virtual MyResponceData<MyViewModel> Get(MyRequestData requestData)
Если я закомментирую третий метод, остальные 2 будут работать, как и ожидалось, однако с этим также будет доступен {"Message":"An error has occurred."}
это не очень помогает, но, поскольку я работаю, когда я комментирую метод, я предполагаю, что это проблема маршрутизации. У меня настроена только маршрутизация по умолчанию, а именно:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
То, что я пробовал до сих пор:
- Добавление
[FromUri]
атрибут к аргументу "MyRequestData", как я прочитал это может решить проблему. - добавленной
[Route("api/controller/otherGet")]
это работает, но я бы предпочел это маршрутизация на параметр, если это возможно.
Любая помощь приветствуется.
1 ответ
После изучения этого, это не выглядит возможным (не стесняйтесь поправлять меня).
Я решил это в конце концов, сделав Get()
а также Get(MyRequestData requestData)
private и создание дополнительного метода get:
public virtual object Get([FromUri]MyRequestData requestData)
Тогда я звоню в соответствующий частный Get
метод в соответствии с тем, как requestData
параметр установлен.