RESTful Web APIs 読書メモ(2)
Chapter 2. A Simple API
GETリクエスト
- リソース状態の変更は意図しない
- アクセスカウンタやログ保存のような付随した事象の変更はOK
安全なメソッド
過去にGETリクエストで、リソース状態の変更がしばしば行われていたが、これは間違った設計
レスポンス
- status code
- リクエストがどう処理されたかという結果をクライアントに知らせる
- entity-body
- ドキュメント本体
- レスポンスヘッダ
- entity-bodyを記述するためのKey-Valueペア
- status codeの後、entity-bodyの前に送られる
- content-type
- どんなentity-bodyが返されたかクライアントに知らせる
- media-type
JSON
- APIレスポンスの表現として用いられるフォーマット(RFC4627)
Collection+JSON
- Publishing APIの目的で用いることができるフォーマット
- 6章参照
- 利用可能なリソースの一覧を発行するための標準
- collection, items, valueのそれぞれにhrefプロパティをもつ
- リスト、明細、フォームテンプレート、検索結果のいづれでも同じフォーマット
hrefと名付けられたとき、その内容はかならずURI
Collection+JSONを使った、itemの追加
- template構造に基づいて、内容を埋める
- content-type: application/vnd. collection+jsonでPOSTリクエストを発行する
- 成功したら、ステータスコード201を返す
- また、レスポンスには新しいリソースのURIを含めておく
- 新しく作成されたリソースもまたGETリクエストで取得すると、それもまた、Collection+JSON
- template構造に基づいて、内容を埋める
POSTリクエスト
(なんかまとめづらい内容なので省略)
アプリケーションセマンティクスがセマンティクスギャップを作ること
アプリケーションセマンティクス
- アプリケーション特有の構造
- media-typeのフォーマットとしては規定されていない構造
標準化された、もしくは互いに合意されたアプリケーションセマンティクスであれば、セマンティクスギャップ消失する
あえてセマンティクスギャップを広げることで、APIに差別化をもたらすことができるかもしれない