1. ホーム
  2. http

[解決済み】GETリクエストで同じパラメータ名で複数の値を渡す場合の正しい方法

2022-04-07 23:16:01

質問

GETリクエストで同じパラメータ名で複数の値を渡す正しい方法は何か調べています。

こんなURLを見たことがあります。

http://server/action?id=a&id=b

そして、こんなURLも見かけました。

http://server/action?id=a,b

私の理解では、1が正しいのですが、これについての参考文献が見当たりません。httpの仕様書を見ましたが、URLの「query」部分がどのように構成されるべきかについては何も書かれていませんでした。

ウェブサービスを構築する場合、これらのメソッドのどちらが標準なのかを知りたいのです。そうすれば、私のウェブサービスを使用する人は、同じ名前の複数のパラメータを渡す方法を知ることができます。

そこで、どちらのオプションが正しいか確認するために、どなたか公式の参照ソースを教えていただけませんか?

解決方法は?

確かに、定義された規格はありません。この情報の裏付けとして、wikipediaの クエリ文字列 の章をご覧ください。次のようなコメントがあります。

決定的な標準はありませんが、ほとんどのWebフレームワークでは 1つのフィールドに複数の値を関連付けることができます。 [3] [4]

さらに RFC3986 のセクションにある 3.4 クエリ 複数の値を持つパラメータについての定義はありません。

ほとんどのアプリケーションでは、最初に示したオプションが使用されます。 http://server/action?id=a&id=b . その情報を裏付けるために、次のように見てみましょう。 スタックオーバーフローのリンク と、この MSDNリンク ASP.NETアプリケーションでは、複数の値を持つパラメータに同じ規格が使用されています。

しかし、APIの呼び出し側はクエリ文字列の作成にそれほど苦労しないので、APIを開発する以上、自分にとって最も簡単な方法をとることをお勧めします。