【読書記録】Webを支える技術 第3部②
第7章 HTTPメソッド
8種類のメソッド
- GET
- POST
- PUT
- DELETE
- HEAD
- OPTIONS
- TRACE:ほとんど使われていない
- CONNECT:ほとんど使われていない
代表的なメソッド
- GET(読み込み)
- POST(作成)
- PUT(作成・更新) ※POSTで代用可能
- DELETE(削除) ※POSTで代用可能
POSTとPUTの使い分け(作成処理)
- 上記の通り、POSTでもPUTでも作成処理が行える
PUT/DELETEのPOSTによる代用
なぜ代用を考えるのか
- ブラウザによってはGETとPOSTしか対応していない場合がある
- セキュリティ上の理由でプロキシサーバがGETとPOST以外のアクセスを制限していることもある
代用方法
- _methodパラメータ(Ruby on Rails)
- X-HTTP-Method-Override(GoogleのGData)
条件付きリクエスト
- メソッドを実行するかどうかの条件をつけ、実行有無をサーバが選択できるようにすることが可能
- 例:ヘッダにリソースの更新日時を付加し、この日時以降更新されていたらGET処理を行う
べき等性(冪等性)と安全性
べき等性
- ある操作を何回行っても結果が同じになること
- PUTやDELETEはべき等。同じPUT(DELETE)を何回行っても同じ結果
安全性
- 操作対象のリソースの状態を変化させないこと
- GETとHEADは安全
まとめ
下記の点でHTTPはすぐれたプロトコルといえる
- HTTPは限られたメソッドで構成される=RESTの統一インタフェース制約
- GETの安全性
- PUTとDELETEのべき等性
- いざとなればなんでもできるPOST
第8章 ステータスコード
分類とよく使われるコード
- 先頭の数字で場合分けすることでCL/SV間の約束事を減らし、結びつきをゆるやかにする効果(疎結合)
1xx:処理中
2xx:成功
- 200:リクエスト成功
- 201:リソース作成成功
3xx:リダイレクト
- 301 リソースの恒久的な移動
- 303 別URIの参照
4xx:クライアントエラー
- 400 Bad Request リクエストの間違い
- 401 Unauthorized アクセス権の不正
- 404 Not Found リソースの不在
5xx:サーバーエラー
- 503 Service Unavailable サービス停止