devdevdevReports

dev系開発開発者の開発日記

【WEBを支える技術】HTTPメソッド編~名は体を表す~

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

  • 作者:山本 陽平
  • 発売日: 2010/04/08
  • メディア: 単行本(ソフトカバー)

HTTPメソッドとは

  • クライアントからサーバーへリソースに対してどのような処理を行うかを伝達する

8つのメソッドと意味

  • GET
    • 子リソースの取得
  • POST 子リソースの作成
    • リソースへのデータ追加
    • どのほかの処理
  • PUT
    • リソースの更新
    • リソースの作成
  • DELETE
    • リソースの作事
  • HEAD
    • リソースのヘッダ取得
  • OPTIONS
    • リソースがサポートするメソッドの取得
  • TRACE
    • 自分宛てにリクエスメッセージを返すテスト
  • CONNECT
    • プロキシ動作のトンネル接続への変更

HTTPメソッドとCRUDの関連

CRUD 意味 HTTPメソッド
Create 作成 POST / PUT
Read 読込 GET
Update 更新 PUT
Delete 削除 DELETE

GET メソッド

  • リソースの取得
  • 例)WEBページの取得、画像の取得、映像の取得など

POST メソッド

  • 子リソースの作成
  • リソースへのデータ追加
  • 他のメソッドでは対応できない処理の代行
    • GETではURIにパラメータが多すぎる場合、代わりにPOSTでリクエストボディにパラメータを入れてデータ取得

PUT メソッド

  • リソースの更新
  • リソースの作成
  • POSTとPUTの使い分け

DELETE メソッド

  • リソースの削除

HEAD メソッド

  • リソースのヘッダを取得
  • Content-Type、文字コードタイプなど

OPTIONS メソッド

  • リソースのサポートするHTTPメソッドを取得
    • Webアプリケーションに実装
    • Apacheに挙動を設定

GETとPOSTだけで実装する場合

  • HTMLのフォームはGETとPOSTだけ使用可能
    • HTMLの制限でGETとPOSTだけを利用する時代が長かった
    • AjaxXMLHttpRequestモジュールで解消
    • 携帯電話(ガラケー)ではサポートしていないので、GETとPOSTのみ
  • _methodパラメータで解決する方法

    • inputタグにパラメータとして含め、サーバー側で受け取る
    • 例)'< input type="hidden" id="_method" value=PUT">'
  • X-HTTP-Method-Overrideで解決する方法

    • リクエストボディにパラメータとして含め、サーバー側で受け取る
    • 例)X-HTTP-Method-Override:PUT

べき等性と安全性

  • べき等性
    • ある操作を何度実行しても結果が同じであること
  • 安全性
    • 操作対象のリソースの状態を変化させないこと
  • GET
    • べき等、安全
  • POST
    • べき等でない、安全でない
  • PUT
    • べき等、安全でない
  • DELETE
    • べき等、安全でない

HTTPメソッド、URIとサーバー側処理の整合性をとる

  • GETでリソース作成、リソースの削除を行ってはならない
  • PUTで相対的な更新を行わない

【WEBを支える技術】を読む理由 - devdevdevReports

【WEBを支える技術】REST編 - devdevdevReports

【WEBを支える技術】URI仕様編 - devdevdevReports

【WEBを支える技術】URI設計編~良いURI設計とは~ - devdevdevReports

【WEBを支える技術】HTTP基礎編~シンプルさが標準化~ - devdevdevReports

【WEBを支える技術】HTTPメソッド編~名は体を表す~ - devdevdevReports

【WEBを支える技術】HTTPステータス編~名は体を表す~ - devdevdevReports