RESTful Web APIs 読書メモ(1)
Chapter 1. Surfing the Web
- Webは分散コンピューティングの力を秘めている
Webを形作るテクノロジ
- URL
- リソースの識別子
- HTTPプロトコル
- URLにHTTPリクエストを投げ、リソースを表現として取得する
- HTMLフォーマット
Addressability
すべてのリソースが自身を時期別するURLを持つこと
自己記述性メッセージ
Webはリンクを介した対話を提供する
標準化されたメソッド
- HTTPメソッド(RFC2616)
- GET
- リソースの表現を交換すること
- 表現 = リソース状態を時にはtextで、時には画像として、求められた形で返すこと
- リソースの表現を交換すること
- HEAD
- POST
- PUT
- DELETE
- GET
Application State
クライアントサイドの状態
アプリケーション状態はユーザーからのインタラクション、またはサーバーからの応答で更新されて
例
- マイクロブログに投稿する内容
- 選択したチェックボックス
- カートの中身
Resource state
サーバーサイドの状態
クライアントは直接リソース状態を制御できない
- クライアントに保持されるアプリケーション状態と、サーバーに保存されたリソース状態を交換することで間接的に制御
例
- リソースに記録された内容
- 投稿された内容
- ある日時の天気
Connectedness
wwwは連結性(connectedness)の原理で動いている(HATEOASと呼ばれる)
HATEOAS = hypermedia as the engine of application state
hypermedia = アプリケーション状態のエンジン = linkをクリックしたり、formから提出すること
REST APIの問題点
- しばしば別の、Human-readableドキュメントでAPIの利用方法が説明される
- 自己記述性メッセージとConnectednessの原則を破壊する
- サイトが変更されても、古いクライアントアプリでも動くよう後方互換性をもたせるべき
Semantic Challenge
- Web APIの最大の挑戦
- ドキュメント構造の理解と、その意味を理解することの間のセマンティクスギャップを埋めること