我正在尝试在我的 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 }
);
问题是查询字符串参数的名称似乎被忽略了,所以第一个路由总是使用的,不管查询字符串参数的名称。如何修改路线以使其正确?