「Webを支える技術」を読みました(1)
勉強記録
今日は「Webを支える技術」を読んだので、重要そうなところを中心にまとめました。
ここでは第1部のWeb概論と、第2部のURIについてまとめています。
<第1部> Web理論
RPCとは
Remote Procedure Callの略。APIもそのひとつ。
リモートのサーバーで実行しているプログラムをクライアント側から呼び出せる。
RESTとは
Webのアーキテクチャスタイル。
-RESTとハイパーメディア
私たちがWebを使うときは、リンクを辿りながら様々なリソースへとアクセスしていく。
ハイパーメディアの基本機能であるリンクを辿るという作業をいくつか経ることで、ソーシャルブックマークという1つのアプリケーションを実現できる。
RESTではこの特徴を「アプリケーション状態エンジンとしてのハイパーメディア」と呼ぶ。
-RESTと分散システム
RESTに基づいたWebサービスは性能劣化が抑えられる。インターフェースが固定されているので、バージョンアップによる互換性の問題が発生しない。
<第2部> URI
URIの仕様
URIスキーム、ホスト名、パスで構成されている。
パス : /entries/1 リソースを一意に指し示す
より複雑なURI
URIスキーム : http
ユーザ情報 : yohei:pass
ホスト名 : blog.example.jp
ポート番号 : 8000
パス : /search
クエリパラメータ : q=test&debug=ture クライアントから動的にURIを作成するときに使用
絶対パスと相対パス
-絶対パス
ルートディレクトリの頂点から目的地の経路を表す。どの階層にいたとしても、同じスタートかつ同じ経路
-相対パス
今いる階層を基準として、目的地がどこにあるのか表す。
URIと文字
URIで使用できる文字は決められており、日本語の文字は直接いれることができない。
URIの長さに制限はないが、実装常は制限が存在する。
URIの設計
URIを設計する際・・・
-プログラミング言語依存の拡張子を利用しない
-実装依存のパス名を利用しない
-プログラミング言語のメソッド名を利用しない
-セッションID含めない
-URIはそのリソースを表現する名詞である(RESTで設計する場合)
URIは覚えやすく普通の人にも使いやすいように、シンプルでわかりやすいものにするべき。
URI設計のテクニック
(拡張子で表現を指定する)
実装に依存した拡張子は良くないが、依存していない拡張子はリソースの表現を特定するという使い方ができる。
-コンテントネゴシエーション
クライアントの言語設定に従って自動的に適した表現を返す
-言語を指定する拡張子
.jaや.enなどのような拡張子を使うことで、リソースの言語を明示的に指定。
(マトリクスURI)
URIはスラッシュ(/)を使って階層を表現できるが、すべての情報が階層で管理できるとは限らない。(複数のパラメータの組み合わせで表現するリソースなど)
その場合にはマトリクスURIを使う。
セミコロンかカンマでパラメータを区切る。
URIの不透明性
不透明性を意識して実装すべきである。
URIを強く意識する
-URIはリソースの名前である
-URIは寿命が長い
-URIはブラウザがアドレス欄に表示する