C # webAPI ограничить маршрут - PullRequest
       3

C # webAPI ограничить маршрут

0 голосов
/ 06 декабря 2018

в проекте WebAPI WebAPIConfig.cs, добавлено 2 маршрута

config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

config.Routes.MapHttpRoute(
                name: "ActionApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
);

Я пытаюсь создать apiController, содержащий следующие функции

[HttpGet]
public string Get(int id)
{
    return "get";
}
[HttpGet]
[ActionName("ByWait")]
public string[] ByWait(int id)
{
    return "bywait";
}

Я ожидаю, что запрашивающий / api / controllername/ 1234 возвращает «get», а запрос / api / controllername / bywait / 1234 возвращает «bywait».

Однако фактический результат - / api / controllername / 1234 >> throw исключение Было найдено несколько действий, соответствующихзапрос / api / controllername / bywait / 1234 >> "по ожиданию"

Однако может решить проблему?Как ограничить функцию ByWait принимает только запрос, содержащий действие, чтобы он только отвечал на / api / controllername / bywait / 1234 и игнорировал / api / controllername / 1234

Или есть другое лучшее решение?

Спасибо

1 Ответ

0 голосов
/ 06 декабря 2018

Сначала вы можете изменить WebApiConfig:

config.Routes.MapHttpRoute(
    name: "ActionApi",
    routeTemplate: "api/{controller}/{action}/{id}"
);

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

Затем контроллер:

[HttpGet]
public string Get()
{
    return "get-default";
}

[HttpGet]
public string Get(int id)
{
    return "get" + id;
}

[HttpGet]
[Route("api/values/bywait/{id}")]
public string ByWait(int id)
{
    return "bywait";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...