Я пытаюсь настроить маршрутизацию в проекте MVAP4 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 }
);
Проблема состоит в том, что имя параметра строки запроса, похоже, игнорируется, поэтому первый маршрут всегда используется, независимо от имени параметра строки запроса. Как я могу изменить свой маршрут, чтобы все было правильно?