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 параметр установлен.

Другие вопросы по тегам