Можете ли вы использовать маршрутизацию на основе соглашений для объявления маршрутов, которые принимают несколько параметров?

#c# #asp.net-web-api2 #asp.net-web-api-routing

#c# #asp.net-web-api2 #asp.net-web-api-routing

Вопрос:

Я имею в виду, что у меня есть несколько маршрутов, которые принимают несколько параметров:

 api/sockId/sockColor
api/sockId/sockBrand
api/sockId/sockSize
 

Могу ли я объявить только один маршрут для всех этих? Я представляю себе что-то вроде этого:

 config.Routes.MapHttpRoute(
    name: "TwoArgumentGeneralRoute",
    routeTemplate: "api/{controller}/{action}/{id1}/{id2}"
);
 

и, конечно, это должно соответствовать моим методам действий:

 public Task PostSockColor(int sockId, int sockColor);
public Task PostSockBrand(int sockId, int sockBrand);
public Task PostSockSize(int sockId, int sockSize);
 

Ответ №1:

Вы должны быть в состоянии, хотя я думаю, что имена параметров должны соответствовать маршруту.
Итак, вам нужно будет сделать свой маршрут примерно таким:

 routeTemplate: "api/{controller}/{action}/{sockId}/{variant}"
 

Тогда ваши методы отличаются только {action} (именем метода):

 public Task PostSockColor(int sockId, int variant);
public Task PostSockBrand(int sockId, int variant);
public Task PostSockSize(int sockId, int variant);`