Я пытаюсь настроить маршрутизацию в своем проекте MVC4 WebAPI.
Я хочу иметь возможность искать продукты по их имени или типу, например:
/api/products?name=WidgetX
— возвращает все продукты с именем WidgetX /api/products?type=gadget
— возвращает все продукты типа гаджет
Маршруты настроены так:
config.Routes.MapHttpRoute(
name: "Get by name",
routeTemplate: "api/products/{name}",
defaults: new { controller = "ProductSearchApi", action = "GetProductsByName", name = string.Empty }
);
config.Routes.MapHttpRoute(
name: "Get by type",
routeTemplate: "api/products/{type}",
defaults: new { controller = "ProductSearchApi", action = "GetProductsByType", type = string.Empty }
);
Проблема заключается в том, что имя параметра строки запроса игнорируется, поэтому всегда используется первый маршрут, независимо от имени параметра строки запроса. Как я могу изменить свой маршрут, чтобы сделать его правильным?