[解決済み] ASP.NET MVCによる複数パラメータを用いたルーティング
2022-05-10 12:06:45
質問
弊社では、自社製品のAPIを開発しており、ASP.NET MVCの利用を考えています。 APIを設計する際に、ユーザーがAPIからXML形式で情報を要求するために、以下のような呼び出しを使用することにしました。
ご覧の通り、複数のパラメータが渡されます(例.
artist
と
api_key
). ASP.NET MVCでは
artist
は
controller
,
getImages
というアクションがありますが、複数のパラメータをどのようにアクションに渡せばいいのでしょうか?
上記のような書式でも可能なのでしょうか?
どのように解決するのですか?
MVCでは、アクションメソッドにパラメータを追加することで、パラメータを直接サポートすることができます。以下のようなアクションがあるとします。
public ActionResult GetImages(string artistName, string apiKey)
のようなURLが与えられると、MVCはパラメータを自動入力します。
/Artist/GetImages/?artistName=cher&apiKey=XXX
さらに特殊なケースとして、"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
);
と、上の最初の例のようなメソッドがあります。
関連
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVC Frameworkで複数のサブミットボタンを処理する方法は?
-
[解決済み] ASP.NET MVCでenumからドロップダウンリストを作成するにはどうすればよいですか?
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] ASP.NET MVCでビューをコンパイルする
-
[解決済み] ELMAHをASP.NET MVCの[HandleError]属性で動作させる方法は?
-
[解決済み] ASP.NET MVCのAjaxポストでantiforgerytokenを含める。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み] MVC Web API 2 で api/people/STAFF.45287 などのリクエストにドット文字「.