複雑なURIの場合
http://yohei:pass@blog.example.jp:8000/search?q=test&debug=true#n10
URIスキーム
そのURIが利用するプロトコルを示すのが一般的です。
...
URIスキームとその後ろに続く部分は「://」で区切られます
この場合http
ユーザ情報
URIスキームの次に
ユーザ情報
が入っています。ユーザ情報は、このリソースにアクセスする際に利用するユーザ名とパスワードから成ります。ユーザ名とパスワードは「:」で区切り
ます。
ホスト名
DNSで名前が解決できるドメイン名かIPアドレスで、インターネット上で必ず一意になります。
この場合、blog.example.jp
ホスト名とポート番号
ホスト情報は
ホスト名とポート番号からなり、両者は「:」で区切られます
。ポート番号は、このホストにアクセスするときのプロトコルで用いるTCPのポート番号を示します。ポート番号を省略した番号は各プロトコルのデフォルト値が使われます
。httpのデフォルト値は80番
です。
yohei:pass
この場合、ユーザ名がyohei,パスワードがpass
パス
ホスト名のあとには階層を表すパスが続きます。パスは、そのホストの中でリソースを一意に指し示します。
/search
クエリパラメータ
パスの後ろに区切り文字がある
「?」が付き、名前=値形式のクエリ
が続きます。この例ではq=testとdebug=trueがそれぞれクエリです。クエリが複数あるときは「&」で連結します。この一つ以上のクエリの集合を「クエリパラメータ」または「クエリ文字列」
と呼びます
q=test&debug=true
URIフラグメント
その前までの文字列で表現する
URIが指し示すリソース内部の、さらに細かい部分を特定
するときに利用します。例えば、このリソースがHTML文書だった場合は、id属性の値がn10である要素を示す
ことになります。
この場合、n10
出典
感想
まだURIフラグメントに関して理解できていないがURIの構造を理解できた気がする。
これから役立ちそうだ。