2016-09-01 13 views
19

URLにパラメータとクエリ文字列の違いはあまりありません。だから違いは何ですか?また、何をその上で使うべきですか?URLパラメータとクエリ文字列の違いは何ですか?

+1

は、私の知る限り、2つはほぼ同じのために使用されている知っているので、あなたは、コンテキストを持っています - しかし、あなたの場合は、コンテキスト固有のかもしれません。 –

+0

私は特定のコンテキストを持っていない、一般的な質問です。どんな場合には、私はもう一方の方法の代わりに一方の方法を使うべきですか?それらの2つの異なる用途がなければなりません。 – Konst

+0

個人的には、可変またはメソッド呼び出しコンテキストでそれらを取り上げるときにはwordパラメータを使い、URLコンテキストではそれらを話すときにクエリ文字列を使います。 (たとえば、クエリ文字列はメソッドのパラメータに分割されます)。しかし、それは文脈と状況が異なるので、誰かがあなたのような "気分"を感じるときにどちらかを使用してあなたを狩ることに疑問を呈します。 –

答えて

15

query componentは、URIの最初の?で示されます。 "クエリ文字列"は同義語である可能性があります(この用語はURI標準では使用されていません)。

クエリコンポーネントを持つHTTP URIのいくつかの例:クエリコンポーネントの

http://example.com/foo?bar 
http://example.com/foo/foo/foo?bar/bar/bar 
http://example.com/?bar 
http://example.com/[email protected]_=???/1: 
http://example.com/?bar1=a&bar2=b 

list of allowed characters in the query component

"フォーマットは、" URI作成者次第です。一般的な規約(but nothing more than a convention, as far as the URI standard is concerned¹)では、キーと値のペア(別名:照会コンポーネント)を使用します。 パラメータ、上記の最後の例のように。


はURI標準saysを¹:「[...]クエリコンポーネントは、多くの場合の形で識別情報を運ぶために使用される 『キー=値』のペア[...]」

8

パラメータはキーと値のペアでありますURLパスの内側に表示され、セミコロン文字(;)で始まります。

クエリ文字列は、パスの後に表示され、疑問符文字(?)で始まります。

パラメータとクエリ文字列の両方に、キーと値のペアが含まれています。 GET要求で

パラメータがURL自体に表示され、:

<scheme>://<username>:<password>@<host>:<port>/<path>;<parameters>?<query>#<fragment> 

POST要求では、パラメータは、(コンテンツとして知られているように)URL自体ではなく、データストリーム内に現れることができます。

クエリ文字列は常にURLの一部です。

POSTメソッドを使用している場合、パラメータはform-dataデータストリームに埋め込むことができるため、URLに表示されないことがあります。はいPOSTリクエストでは、URLにフォームデータというパラメータを定義できます。パラメータには複数の値がある可能性があるため、矛盾しません。

これまでのところ、この現象の説明は見つかりませんでした。私は、POSTリクエストからのパラメータを "再表示"したり、GET要求を処理するコードが、POSTを処理するコードでいくつかの部分を共有するようにすることが時々役に立ちそうです。もちろん、これはURL内のパラメータをサポートするサーバーコードでのみ機能します。

より良い洞察が得られるまで、form-dataデータストリームPOSTのリクエストでのみパラメータを使用することをお勧めします。

出典:

What Every Developer Should Know About URLs

RFC 3986

関連する問題