## What — リクエスト1行目の先頭に書く動詞
HTTP メソッドは、リクエストの1行目の先頭に書く動詞で、「この URL に対して何をしたいか」をサーバーに伝える部品。
`POST /users HTTP/1.1` の `POST` がそれ。サーバーはまずこの動詞を見て、同じ URL への処理を「読む・作る・変える・消す」に振り分ける。
種類は HTTP の仕様上9個+2026年6月に標準化された QUERY(RFC 10008・「ボディを持てる安全な GET」)があるが、API を叩くのに使うのは実質この5個で足りる。
## How — 5個の意味と1本の判定軸
判定軸は1本:**サーバーのデータが変わるかどうか**。変わらないのは GET だけで、残り4つは全部「書き込み系」。
| メソッド | 意味 | ボディ | 成功時の典型 |
| ------ | ------------- | ----------- | ---------------- |
| GET | 取得(データは変わらない) | なし | `200 OK`+中身 |
| POST | 新規作成 | あり | `201 Created` |
| PUT | 丸ごと置き換え | あり(全項目) | `200` / `204` |
| PATCH | 一部だけ更新 | あり(変える項目だけ) | `200` |
| DELETE | 削除 | なし | `204 No Content` |
どのメソッドを書くかは叩く側が選ぶ。ただし**選択肢は API 側がドキュメントで指定している**——「このエンドポイントは GET と POST を受け付ける」と決まっていて、外れたメソッドを送ると `405 Method Not Allowed` が返る。迷ったら自分で推理せず、ドキュメントの指定をそのまま写す。
## 落とし穴
- **ブラウザのアドレスバーから送れるのは GET だけ**。URL を打って Enter は常に GET になる。POST 以降を試すには [[curl]] の `-X` かコードが要る(`-d` を付けると curl は自動で POST にしてくれる)
- **PUT と PATCH の混同**。PUT は「全項目を送り直して丸ごと置き換え」なので、送り忘れた項目が消える扱いになる API がある。1項目だけ直したいときは PATCH
## 関連
- [[API]] — API まわりの地図
- [[REST]] — この動詞を「どの URL と組み合わせるか」の流儀(資源×メソッドの表)
- [[HTTPリクエストの構造]] — メソッドが収まる場所(4点セットの1つ目)
- [[curl]] — `-X` でメソッドを指定して送るコマンド