HTTP リクエストメソッド解説
HTTP には標準メソッドが 9 種類ありますが、実際の通信でよく使われるのはそのうち数種類です。この表では各メソッドの役割、安全性・冪等性、成功時のステータスコードをまとめています。
| メソッド | 用途 | 安全? | 冪等? | 成功ステータス |
|---|---|---|---|---|
| GET | Retrieve a resource | Yes | Yes | 200 OK |
| HEAD | Retrieve headers only, no body | Yes | Yes | 200 OK |
| POST | Create a resource or trigger an action | No | No | 201 Created |
| PUT | Replace a resource entirely | No | Yes | 200 OK / 204 No Content |
| PATCH | Apply a partial update | No | No | 200 OK |
| DELETE | Remove a resource | No | Yes | 200 OK / 204 No Content |
| OPTIONS | CORS preflight; list allowed methods | Yes | Yes | 204 / 200 OK |
| TRACE | Echo the request back for diagnostics | Yes | Yes | 200 OK |
| CONNECT | Open a tunnel, e.g. HTTPS via a proxy | No | No | 200 OK |
注記
- 「安全」とはサーバーの状態を変えないこと。GET・HEAD・OPTIONS・TRACE だけが安全なメソッドです。
- 「冪等」とは 1 回呼んでも複数回呼んでも結果が同じこと。PUT・DELETE・GET は該当し、POST と PATCH は該当しません。
- ルートが対応していないメソッドには 405 Method Not Allowed が返り、通常 Allow ヘッダーが付きます。
よくある質問
- GET と POST の違いは何ですか?
- GET は副作用なくリソースを取得し、安全に繰り返せます。パラメータは URL に入ります。POST は作成やアクションの実行に使い、状態を変える可能性があるためむやみに繰り返してはいけません。
- HTTP メソッドの「安全」とはどういう意味ですか?
- 安全なメソッドはサーバーの状態を変更しないため、リスクなく呼べます。GET・HEAD・OPTIONS・TRACE は安全で、POST・PUT・PATCH・DELETE は安全ではありません。
- PUT と PATCH の違いは?
- PUT は送信内容でリソース全体を置き換えます。PATCH は指定したフィールドだけを部分的に変更します。PUT は冪等で繰り返しても結果は同じですが、PATCH は一般に冪等ではありません。
- HEAD メソッドは何に使いますか?
- HEAD は GET と同じ動作をしますがレスポンスボディを返しません。全体をダウンロードせずに、リソースの存在やサイズ、ヘッダーを確認するのに便利です。