当社では自社製品用の API を開発しており、ASP.NET MVC の使用を検討しています。API を設計する際に、ユーザーが XML 形式で API から情報を要求できるように、次のような呼び出しを使用することにしました。
ご覧のとおり、複数のパラメータが渡されます (つまり、およびartist
) api_key
。ASP.NET MVC では、がアクションartist
になりますが、アクションに複数のパラメータを渡すにはどうすればよいでしょうか?controller
getImages
上記の形式を使用してもこれは可能ですか?
ベストアンサー1
アクション メソッドにパラメーターを追加するだけで、MVC でパラメーターが直接サポートされます。次のようなアクションがあるとします。
public ActionResult GetImages(string artistName, string apiKey)
MVC は次のような URL を指定するとパラメータを自動的に入力します。
/Artist/GetImages/?artistName=cher&apiKey=XXX
もう 1 つの特別なケースは、「id」という名前のパラメータです。ID という名前のパラメータは、クエリ文字列ではなくパスに配置できます。次のようになります。
public ActionResult GetImages(string id, string apiKey)
次のような URL で正しく入力されます。
/Artist/GetImages/cher?apiKey=XXX
さらに、より複雑なシナリオの場合は、MVC がアクションを見つけるために使用するルーティング ルールをカスタマイズできます。global.asax ファイルには、カスタマイズ可能なルーティング ルールが含まれています。デフォルトでは、ルールは次のようになります。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
次のようなURLをサポートしたい場合
/Artist/GetImages/cher/api-key
次のようなルートを追加できます:
routes.MapRoute(
"ArtistImages", // Route name
"{controller}/{action}/{artistName}/{apikey}", // URL with parameters
new { controller = "Home", action = "Index", artistName = "", apikey = "" } // Parameter defaults
);
そして、上記の最初の例のような方法です。