<DAY67>WEBを支える技術を読んで第5章
●学習日数 67日
●学習時間(本日) 1.0時間
●累計学習時間 174.0時間
●一日あたりの平均学習時間 2.59時間
クールなURIとは
リンクのきれない,ずっと残りづづけるURI。リソースリンクが埋め込まれ、ほかのリソースに結びつく、ハイパーメディアシステムを採用しているWEBにとって、リンク切れは死活問題。 リンクのきれにくい設計するのが重要である。
リンクをきれにくくするには5つ実装に気をつける。
・URIにプログラミング言語依存の拡張子を利用しない(.pl、.rb、.do、.jspなど)
・URIに実装依存のパス名を利用しない(cgibin、servletなど)
・URIにセッションIDを含めない
・URIはそのリソースを表現する名詞である
URIにセッションIDを含めない(補足説明)
URIに含むのでなくCookieに含ませる。 ログインのたびに番号が変わるので。下がURIに組み込んだ悪い例
jsessionid=12345678
URIはそのリソースを表現する名詞である(補足説明)
今のフレームワークのバージョンはデフォルトで使えなくなっているけど。 showなどのアクション名をURIに組み込む事。
URIはユーザビリティを考えて設計する。
とにかく、シンプルでわかりやすく馴染みやすいURIをつくる。 URIを変更したいときは、redirectをかける。 リダイレクトをかける仕組みはHTTPで用意がある。
プログラミング言語に依存しなければ、URIに拡張子をつける。(補足説明)
あくまでプログラミング言語に依存している拡張子がだめ。以下は逆に明示的にする方が良い。 例えば、企業のプレリリース。大企業では、日本語、英語など複数の言語で記載されるのが一般的。一つのリソースが複数の情報をもっている場合、明示的にしたあげると、みやすくなります。
http://example.jp/2010/05/01/press.ja
もし、していなければ、コンテントネゴシーエションが働き、日本語ユーザーが英語文を読みたい時には、ブラウザの言語設定をわざわざ変更しなければなりません。
コンテントネゴシーエション
HTTPの便利な機能。日本語OSには日本語を英語OSには英語をと、レスポンスする内容を変える機能。
マトリクスURI
複数のパラメーターの組み合わせでリソースを表現する事。 地図情報など。階層構造を表現するのに、/のかわりに<;>か<,>を使用する。
パラメーターの順番が意味をもたないとき : パラメーターの順番が意味をもつとき ,
URIの不透明性
クライアントは、サーバが提供するURIをそのまま扱うだけ。Uクライアント側でURIを構築すると、サーバ側の実装でURIの構造を変更したとたんにシステムが動かなくなる。 URIをクライアント側で組み立てたり、拡張子からリソースの内容を推測したりできないことを、「URIはクライアントにとって不透明(Opaque)である」と言う。
URIで超重要な事
フレームワークが優秀すぎて見えづらくなっているが以下の事を意識する。
・URIはリソースの名前である ・URIは寿命が長い ・URIはブラウザがアドレス欄に表示する