2012-03-01 12 views
8

私が実際に理解していないことは、「?代わりのURLの「&」は:URLのパラメータ区切り、誤った疑問符の場合

question mark vs ampersand

我々は最初の区切り文字として別​​の文字を使用する場合、それは誰の人生が容易になります。 あなたは合理的な説明を考え出すことができますか?

編集:私は、より多くの研究の後、私は "&"はファイル名の一部であることがわかりました(用語& conditions.html)?良いセパレーターです。しかし、私はまだ "?"セパレータのために(ビューのURLジェネレータとパーサの点から)の生活をより容易にする:

question mark as separator

は一見明らかではないが、「&」を使用してのいずれかの利点がありますか?

答えて

7

URI仕様(RFC 3986)の観点から、唯一のセパレータは "?"です。クエリのフォーマットは不透明です。アンパサンドはフォームの送信にHTMLが使用するようなものです。

+0

それで、彼らは別の時代に発展しましたか? URIの前にHTMLがありましたか? –

+0

はい、別々に開発しましたが、URI(以前はURLと呼ばれていたもの)の前にHTMLはありませんでした。 –

+4

答えは「HTMLとURIは別々に開発され、HTML開発者は「not」の代わりに「?」をパラメータセパレータとして使用する利点に気付きませんでした。彼らには正当な理由があるかもしれません。 –

4

この記事の回答はかなり - http://www.skorks.com/2010/05/what-every-developer-should-know-about-urls/です。これをハイライトするには、ここをクリックしてください。

クエリは、 のリソースにいくつかのパラメータを送信するのに適した方法です。これらはkey = valueのペアで、残りの部分とURLの は? (疑問符)文字であり、普通は で、それぞれ&(アンパサンド)文字で区切られます。あなたが知らないかもしれないのは、 です。 (セミコロン)文字も同様です。次のURLは同じです。

http://www.blah.com/some/crazy/path.html?param1=foo&param2=bar

http://www.blah.com/some/crazy/path.html?param1=foo;param2

-1

RFC 3896(https://www.ietf.org/rfc/rfc3986.txt)は一般的なサブデリミタを定義します... '?' '&'と ';'は一般的です。サブです。その仕様はかなり明確です。

この場合、後者の '?' charsはクエリの一部として扱われます。クエリパーサーがspecに厳密に従うと、クエリ全体がapp-destinationに渡されます。 app-destinationが?を扱う方法でクエリ文字列をさらに処理することを選択できる場合、 paramの名前と値のペアの区切り文字として、アプリケーションのデザイナに依存します。

私は、クエリ文字列を分割するコードと元のuriが一致するためにすべての区切り文字を使用するため、これはしばしば「うまくいく」と考えています。 2)クエリ文字列は、 '?'を含むcharマッチリストを使用して解析されます。 (便宜的に)....これはすでにどこかにある偏在するライブラリで発生している可能性があります。

+0

あなたのdownvotesを説明してください。 – Rondo