URI( Uniform Resource Identifier )とは?
リソースを統一的に識別するIDのこと。言い換えるとそのリソースがある場所。
URIはそれぞれに付与され、他のリソースと被ってはいけない。
ちなみに馴染みのあるURL( Uniform Resource Locator )はURIの中に含まれる。
似たようなものでURN( Uniform Resource Name )がある。
個人情報で例えると・・・
URL・・・住所( 〇〇県〇〇市… )
URN・・・名前( 山田太郎 )
URI ・・・URLとURNの両方or片方を指す
つまり、URI ⊃ URL, URNという関係性。
URIの構成
例) https://tarou:pass@note.example.jp:8000/search?q=text#n10
名称 | 上記の例 | 役割 |
---|---|---|
URIスキーム | https | URIが使用するプロトコル |
ユーザー情報 | tarou:pass | リソースにアクセスするユーザー名とパスワード |
ホスト名 | note.example.jp | ドメイン名かIPアドレス |
ポート番号 | 8000 | プロトコルで使用するTCPの番号 |
パス | /search | ホストの中にあるリソース |
クエリパラメータ | q=text | クライアントから動的にURIを生成するときに使用 |
URIフラグメント | #n10 | ホストの中のリソース内部のさらに細かい部分を特定 |
絶対URIと相対URI
(カレントディレクトリは/foo/bar,barからhogeに移動したい時)
絶対URI・・・ルートを起点に記述する(/foo/bar/hoge)
相対URI・・・今いる場所を起点に記述する(hoge)
基本は絶対URIを使用する。(相対URIはクライアント側で面倒な処理を行う必要があるため)
相対URIを使用するときの注意点
相対URIはそのままだとクライアント(ユーザー側のPC)が場所を特定できない。
理由は、クライアント側がルートディレクトリの場所を知らないので。
解決策としてベースURIを用いる方法がある。
ベースURIはHTMLorXMLの中で記述する。
例
<head>
<base href = "https://note.example.jp/" />
</head>
この文書内のベースURIが https://note.example.jp/
に設定される。
URIで使用できる文字
○アルファベット,数字,記号
×日本語
日本語をURIの中に記述したい時は、%エンコーディングする。
%エンコーディング
あ→%E3%81%82(UTF-8)のように記述することで日本語表示される。
UTF-8が主流。
URIの長さ
制限はないが、ブラウザで制限があるのでその範囲内に収める。(IEなら2038バイト)
実装時のポイント(2つ)
なるべく絶対URIを使用する。
文字エンコーディングを行う時はUTF-8を用いる。
次回
次回はURIの設計について書きます。