【Webを支える技術】第2部 URI 学習メモ

 

目次

はじめに

「Webを支える技術」を読んで自分なりにまとめた学習メモです。

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

 

第2部 URI 

第4章 URIの仕様

URIとは

URI(Uniform Resource Identifier)とは、リソースを統一的に識別するIDのことです。

  • 統一的:全てが同じルールに従っているということ
  • 識別子:あるものをほかのものと区別して指し示すための名前/ID

 

URIの構文

例:http://yohei:pass@blog.example.jp:8000/search?q=test&debug=true#n10

  • URIスキーム(URI Scheme:http
  • ユーザ情報:yohei:pass
  • ホスト名(DNS: Domain Name System):blog.example.jp
  • ポート番号:8000
  • パス(Path):/search
  • クエリパラメータ:q=test&debug=true
  • URIフラグメント:#n10

※ ポート番号を省略した場合は各プロトコルのデフォルト値が使われます。HTTPのデフォルト値は80番です。

 

絶対URIと相対URI

絶対URI(Absolute Path):ルートから記述したパス

http://example.jp/foo/bar

相対URI(Relative Path):カレント(現在)ディレクトリから記述したパス

/foo/bar

ベースURI(Base URI、基底URI):相対URIの起点となるパス

 

URIの長さ制限

仕様上はURIの長さ制限はありません。しかし、実装上は制限が存在します。特に Internet Explorer はバージョンに問わず2,038バイトまでという制限があり、事実上この長さに合わせて実装することが多くなります。

 

さまざまなスキーム

 

第5章 URIの設計

クールなURIは変わらない

クールURI(Cool URI):良いURIやきれいなURI

 

URIの設計指針

  1. URIプログラミング言語依存の拡張子を利用しない(.pl、.rb、.do、.jspなど)
  2. URI実装依存のパス名を利用しない(cgi-bin、servletなど)
  3. URIはセッションIDを含めない
  4. URIはそのリソースを表現する名詞である

 

URIユーザビリティ

複雑なURI

http://example.jp/servlet/LoginServlet

シンプルなURI

http://example.jp/login

覚えやすく、開発者ではない普通の人にも使いやすい。それがクールURIの良い点です。

 

URIを変更したいとき

現在運用しているシステムのURIを変更したいときは、できる限りリダイレクト(Redirect)するようにしましょう。リダイレクトとは、古いURIを新しいURIに転送するHTTPのしくみのことです。

 

URI設計のテクニック

コンテントネゴシエーション(Content Negotiation):言語やファイルタイプなど複数の表現形式のファイルをサーバ上に用意しておき、ブラウザからのリクエストに応じてサーバが最適なファイルを自動的に判断してレスポンスを返す仕組みです。

マトリクスURI:複数のパラメータの組み合わせを表現するリソースの場合に用いる。例:「Google Map」

 

URIを強く意識する

  1. URIはリソースの名前である
  2. URIは寿命が長い
  3. URIはブラウザがアドレス欄に表示する

これらの観点から、URIWebサービスやWeb APIの設計において最も重視すべきパーツであると言えるでしょう。