URIの複雑要素とその意味
投稿日: 2025年06月19日
前回、URIの基本構成である「スキーム」「ホスト」「パス」について解説しました。
今回は、基本構成に加えた複雑なURI構成を見ていきます!
関連記事もご覧ください!
以下のような、より複雑な構成を持つ URI を見てみましょう。
http://yohei.pass@blog.example.jp:8000/search?q=test&debug=true#n10
この URI に含まれる主な構成要素は次の通りです:
スキーム:http
ユーザ情報:yohei.pass
ホスト名:blog.example.jp
ポート番号:8000
パス:/search
クエリパラメータ:q=test&debug=true
フラグメント:#n10
🧑💻 ユーザ情報
http://**yohei.pass**@~
のように、URIスキームの直後に現れる部分です。
これは、アクセス先のリソースに対して認証が必要な場合に使われ、ユーザ名とパスワードを :
で区切って指定できます。
ユーザ名:パスワード@ホスト
この記法は近年ではあまり使わず、基本認証はヘッダーで行うのが一般的です。
🌐 ホスト情報とポート番号
blog.example.jp:8000
のように、ホスト名とポート番号が :
で区切られて指定されています。
ホスト名は、インターネット上で一意なドメイン名(またはIPアドレス)
ポート番号は、省略時はデフォルト(HTTPは80、HTTPSは443)
📂 パス
/search
の部分は、ホスト内のリソースを一意に示す階層構造です。
❓ クエリパラメータ
パスの直後に ?
を挟み、名前=値
の形式でデータを渡します。
?q=test&debug=true
クエリが複数ある場合は &
でつなげます
Web検索や絞り込み、ページネーションなどでよく使われます
この全体を「クエリ文字列」や「クエリパラメータ」と呼びます
🔗 フラグメント識別子(ハッシュ)
#n10
これは、指定されたリソースの中の特定部分を示します。
たとえば リソースがHTML 文書だった場合、id="n10"
の要素にジャンプします。
今回は、URI のより複雑な構成として、ユーザ情報・ポート番号・クエリパラメータ・フラグメントといった要素について解説しました。
これらのパーツは、ただの文字列ではなく、Web 上でリソースを正確に指定するための意味ある構成要素です。
特にクエリパラメータは、僕も個人開発で検索フィルター機能を実装した際に活用しました。
これらの複数の要素は、ユーザーにとって柔軟な検索体験を提供できる重要な仕組みです。
次回は絶対URIと相対URIについての内容です!