輪講形式で読んでいて、気になった点をまとめておく
第1部:Webの概要
- RPC
- 分散システムを実現するための技術の1つ
- 分散システムの流れが来たが、複雑さの問題から発展しなかった
- Webはシンプルな単方向リンクだけを持つものとして開発
- SOAP
- メッセージ転送の方法だけを定めたプロトコル
- 標準化戦争勃発
- REST
- リソース
- リソースとはWeb上の情報
- 世界中の無数のリソースは、それぞれURIで一意の名前を持つ
- URIを用いることで、プログラムはリソースが表現する情報にアクセス出来る
- RESTなアーキテクチャのために
- クライアント/サーバ
- ユーザインターフェースと処理を分離する
- ステートレスサーバ
- クライアントのアプリケーション状態をサーバで管理しない
- ステートフルな場合、Cookieを使ったセッション管理をしている
- REST的には間違い
- キャッシュ
- 一度取得したリソースをクライアント側で使い回す
- 効率化はできるが、情報の信頼性が下がる
- 一度取得したリソースをクライアント側で使い回す
- 統一インターフェース
- URIで指し示したリソースに対する操作を統一した限定的なインターフェースで行う
- 階層化システム
- サーバとクライアントの間にロードバランサを設置して負荷分散を行う
- コードオンデマンド
- ブラウザ以外にクライアント側を拡張出来る
- JSやFlashなど
- プログラムをクライアントにダウンロードして実行する
- ブラウザ以外にクライアント側を拡張出来る
- クライアント/サーバ
第2部:URI
- URIの仕様
- railsのrouteファイルなどに関わってくるから、ここから大事!
- URIスキーム
http://hogehoge.com
-
http
の部分がURIスキーム
- URIフラグメント
hogehoge/member#user1
- ページ内の#以下の文字列の要素を示す
- URIの設計
- 変わりにくいURIのために
- プログラミング言語に依存した拡張子やパスを含めない
- メンテナンス性や可読性
- メソッド名やセッションIDを含めない
- リファクタリングの時に大変なことに
- URIはリソースを表現する名詞にする
+
- プログラミング言語に依存した拡張子やパスを含めない
- シンプルで分かりやすいものがCool
- 拡張子で表現する方法
- .jaや.enなどの言語を指定する時に使う
- .txtや.jsonを付けてやる(rails
- 変わりにくいURIのために
第3部:HTTP(Hypertext Transfer Protocol)
- HTTPの基本
- 階層型プロトコル
- p69参照
- 同期型プロトコル(レスポンスを待つ)
- HTTPメッセージ
- ヘッダとボディーに分かれておく
- 階層型プロトコル