search
LoginSignup
0

More than 1 year has passed since last update.

posted at

updated at

URIの仕様について

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の設計について書きます。

参考書籍

Webを支える技術

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0