MVC4WebAPIプロジェクトでルーティングを構成しようとしています。
名前や種類に基づいて商品を検索できるようにしたいと思います。
/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 }
);
問題は、クエリ文字列パラメータの名前が無視されているように見えるため、クエリ文字列パラメータの名前に関係なく、最初のルートが常に使用されるルートになることです。ルートを正しく変更するにはどうすればよいですか?