HTTPリクエストについて
HTTPリクエストメソッド一覧
GET
対象リソースを取得する。
HEAD
レスポンスヘッダのみを取得する。本文は返さない。
POST
リソースにデータを送信し、サーバーで処理させる。新規作成やフォーム送信に使う。
PUT
対象リソースをリクエストの内容で置き換える。
DELETE
対象リソースを削除する。
CONNECT
サーバーとのトンネル接続を確立する。主にプロキシで使用される。
OPTIONS
対象リソースまたはサーバーがサポートしている通信方法(利用可能メソッドなど)を問い合わせる。
TRACE
送信したリクエストをそのまま返してもらい、経路上での変更を調べる。
部分更新系
PATCH
リソースの一部を更新する。PUTと違って全体を置き換える必要はない。
WebDAV(分散ファイル管理拡張)
PROPFIND
リソースのメタデータ(プロパティ)を取得する。
PROPPATCH
リソースのプロパティを変更する。
MKCOL
新しいコレクション(ディレクトリ)を作成する。
COPY
リソースをコピーする。
MOVE
リソースを移動する。
LOCK
リソースにロックをかける。
UNLOCK
ロックを解除する。
CalDAV / CardDAV(カレンダーや連絡先管理拡張)
REPORT
特定の検索条件に基づき、詳細な情報を取得する。
MKCALENDAR
新しいカレンダーを作成する。
ACL
アクセス制御リストを設定する。
その他拡張(IANA登録済みの代表例)
SEARCH
リソースを検索する(WebDAV検索拡張)。
BIND / UNBIND
リソースに別名(バインド)を作成/削除する。
REBIND
バインド先を変更する。
HTTPメソッドの特性
|:-:|:-:|:--|
|Safe(副作用なし) | Idempotent(繰り返しOK)| メソッド(*含む)|
|はい (読み取り系) | はい | GET, HEAD, OPTIONS, TRACE |
|いいえ(状態変更) | はい | PUT, DELETE |
|いいえ | いいえ | POST, PATCH, CONNECT|
GET, HEAD, OPTIONS, TRACE:
これらのメソッドは、サーバーの状態を変更しないため安全(Safe)であり、
何度実行しても同じ結果が返されるため冪等(Idempotent)である。
PUT, DELETE:
これらのメソッドは、サーバーの状態を変更するため安全ではない(Not Safe)。
しかし、何度実行しても最終的なサーバーの状態は同じになるため冪等(Idempotent)である。
POST, CONNECT:
これらのメソッドは、実行するたびにサーバーの状態が変わりうるため、
安全でもなく(Not Safe)、冪等でもない(Not Idempotent)。
PATCH:
リソースの一部を更新するメソッド。同じPATCHリクエストを複数回送ると、
サーバーの状態が意図せず複数回変更される可能性があるため、安全でもなく、一般的には非冪等性である。
冪等性(べきとうせい)とは「ある操作を1回行っても複数回行っても結果(状態)が同じになる性質」。
補足1
PATCHの冪等性について
→ 厳密には「PATCH は仕様上 冪等である場合もあればない場合もある」とされている。
例:
「フィールドを X=5 に更新する PATCH」は冪等。
「フィールドを X+=1 する PATCH」は非冪等。
補足2
安全(Safe) = サーバーの状態を変えない
冪等(Idempotent) = 同じリクエストを繰り返しても状態が変わらない