Как изменить имена параметров в маршрутизации WebAPI 2 - PullRequest
1 голос
/ 09 января 2020

Используя маршрут по умолчанию

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

Я могу выполнить неявное действие, например GET http://ip: port / api / dogs / Henry :

public class DogsController:ApiController
{
    public Dog Get(string id) => DogRepository.GetDog(id);
}

Но это, насколько я смог выяснить, требует, чтобы имя параметра действия соответствовало определению маршрутизации: "id". Мне нравятся описательные имена параметров, так как я могу изменить имя параметра с «id» на «dogName»?

Я знаю, что это очевидно с одним контроллером и одним маршрутом, но у меня могут быть кошки, goldfi sh и слоны в моем API, так что "dogName" не будет описательным параметром name во всех случаях.

1 Ответ

2 голосов
/ 09 января 2020

Для этого можно использовать свойство FromUriAttribute.Name:

public Dog Get([FromUri(Name = "id")]string dogName) => DogRepository.GetDog(dogName);

Обратите внимание, что в ASP. NET Core соответствующий атрибут называется FromRoute, но ведет себя по существу одинаково (в это дело).

...