RFC 1808、RFC 3986を見てきたらURLのQueryComponentというものが定義されていて面白かった話
いままでURLの文法をあまり深く考えたことがなかったのですが、よく調べてみると面白かったので紹介します。
ある時、PythonでURLをパースしていたんですが、ドキュメントを見ると
scheme://netloc/path;parameters?query#fragment
上記のようなRFC1808の形に沿ったURLを分解すると書いてあるんですね。
この、QueryComponent
と定義されている ;parameters
っていうパラメータですが、僕にとってはすごい初見の話でした。
Pythonのドキュメントには、とりあえずRFC1808に沿ってくれと書いてあるだけで詳細は記載されていません。
仕様を正しく理解してないとバグを埋め込みそうだったので仕様を少し深く調べてみました。
RFC1808の仕様を見てみると、たしかに定義されています。
ですがRFC1738を見てくれとのこと。
http://www5d.biglobe.ne.jp/stssk/nro/rfc1738_j.txt
見てみると、 type=<typecode>
といった形で使うと記載されています。
FTPでは僕らのよくつかっているgetパラメータなどが定義されていないように見受けられるので、その変わりですかね。
こちらはFTPのURLの形式のようで、それをRFC1808でも引き継いでいるようですね。
ちなみに現在は最新がRFC3989となっており、しっかりRFC1808の形を引き継いでいてQueryComponent
も現役のようです。