yujiroのプログラミング

勉強内容をアウトプットし、サボらないようにする為のブログ

<DAY67>WEBを支える技術を読んで第5章

\ Follow me!! /

f:id:yujiro0320:20190415152250p:plain

●学習日数  67日 

●学習時間(本日)   1.0時間

●累計学習時間  174.0時間

●一日あたりの平均学習時間  2.59時間 

クールなURIとは

リンクのきれない,ずっと残りづづけるURI。リソースリンクが埋め込まれ、ほかのリソースに結びつく、ハイパーメディアシステムを採用しているWEBにとって、リンク切れは死活問題。 リンクのきれにくい設計するのが重要である。

リンクをきれにくくするには5つ実装に気をつける。

URIプログラミング言語依存の拡張子を利用しない(.pl、.rb、.do、.jspなど)

URI実装依存のパス名を利用しない(cgibin、servletなど)

URIプログラミング言語のメソッド名を利用しない

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はブラウザがアドレス欄に表示する