URLには、パラメータとクエリ文字列の違いはあまり見られません。では、違いは何ですか?また、どちらをいつ使用する必要がありますか?
URLには、パラメータとクエリ文字列の違いはあまり見られません。では、違いは何ですか?また、どちらをいつ使用する必要がありますか?
回答:
クエリコンポーネントは、最初によって示される?
URIです。「クエリ文字列」は同義語である可能性があります(この用語はURI標準では使用されていません)。
クエリコンポーネントを使用したHTTPURIの例:
http://example.com/foo?bar
http://example.com/foo/foo/foo?bar/bar/bar
http://example.com/?bar
http://example.com/?@bar._=???/1:
http://example.com/?bar1=a&bar2=b
クエリコンポーネントの「形式」は、URIの作成者次第です。一般的な規則(ただし、URI標準に関する限り、規則にすぎません¹)は、キーと値のペア(別名)にクエリコンポーネントを使用することです。上記の最後の例のように、パラメータ:bar1=a&bar2=b
。
このようなパラメータは、他のURIコンポーネント、つまりパス²やフラグメントにも現れる可能性があります。URI標準に関する限り、どのコンポーネントとどの形式を使用するかはあなた次第です。
パス、クエリ、フラグメントにパラメータを含むURIの例:
http://example.com/foo;key1=value1?key2=value2#key3=value3
¹URI標準はクエリコンポーネントについて述べています:
[…]クエリコンポーネントは、「key = value」ペアの形式で識別情報を運ぶためによく使用されます[…]
²URI標準はパスコンポーネントについて述べています:
[…]セミコロン( ";")および等号( "=")の予約文字は、そのセグメントに適用可能なパラメーターとパラメーター値を区切るためによく使用されます。カンマ( "、")の予約文字は、同様の目的でよく使用されます。
パラメータは、URLパス内に表示できるキーと値のペアであり、セミコロン文字(;
)で始まります。
クエリ文字列はパス(存在する場合)の後に表示され、疑問符文字(?
)で始まります。
パラメータとクエリ文字列の両方に、キーと値のペアが含まれています。
でGET
要求、パラメータがURL自体に表示されます:
<scheme>://<username>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment>
でPOST
要求、パラメータ(コンテンツとして知られているように)URL自体ではなく、データストリーム内に現れることができます。
クエリ文字列は常にURLの一部です。
form-data
POSTメソッドを使用する場合、パラメーターをデータストリームに埋め込むことができるため、URLにパラメーターが表示されない場合があります。はい、POST
リクエストはパラメータをフォームデータおよびURLで定義できますが、パラメータには複数の値が含まれる可能性があるため、これは矛盾しません。
これまでのところ、この動作の説明は見つかりませんでした。POST
リクエストからパラメータを「再表示」したり、GET
リクエストを処理するコードに、を処理するコードと一部を共有させたりすると便利な場合があると思いますPOST
。もちろん、これはURLのパラメーターをサポートするサーバーコードでのみ機能します。
より良い洞察が得られるまでform-data
、POST
リクエストのデータストリームでのみパラメータを使用することをお勧めします。
出典: