私は、次のようにクエリできるアイテムのリストを持っているRestfulサービスを作成しています:
GET Api/Items
すべてのアイテムをリストします。もちろん、これらのアイテムを「最も人気のある」、「ユーザー x に属する」、または「カテゴリ Y に属する」としてリストする必要もあります。
stackoverflow 2.0 API をちらりと見て、これをどのように解決したかを確認すると、次のように URL に名前を付けました。
GET Api/Items/MostPopular
そして、私が採用したいこの方法論は、理にかなっており、見栄えがするようです。
ただし、この URL 構文も許可するように Web-API を構成するにはどうすればよいですか? デフォルトのルートは次のとおりです。
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
したがって、その前に余分なルーティングを追加する必要があると思います。私はこのようにそれを行うことができます:(これが機能する場合)
config.Routes.MapHttpRoute(
name: "SpecializedApi",
routeTemplate: "api/{controller}/MostPopular",
defaults: new { id = RouteParameter.Optional }
);
しかし、それは私が好きではないすべてのコントローラーに MostPopular ビットを追加します。
このようなものは機能しますか?
config.Routes.MapHttpRoute(
name: "SpecializedApi",
routeTemplate: "api/Items/MostPopular",
defaults: new { id = RouteParameter.Optional }
);
ルーティング テーブルがすぐに非常に大きくなり、維持できなくなる可能性があるため、これが本当に正しい方法でしょうか?