I'm trying to configure routing in my MVC4 WebAPI project.
I want to be able to search for products based on their name or their type like so:
/api/products?name=WidgetX
- returns all products named WidgetX
/api/products?type=gadget
- returns all products of type gadget
The routes are configured like this:
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 }
);
The problem is that the name of the query string parameter seems to be ignored so the first route is always the one used, regardless the name of the query string parameter.
How can I modify my route to get it right?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…