HTTPメソッドにおけるPUTとPATCHの役割
Web APIやRESTfulな設計で、よく登場するのが PUT と PATCH の2つの更新系メソッドです。
どちらも「既存データの変更」に使われますが、更新の仕方に違いがあります。
PUT:リソース全体を上書き
PUTは、既存のリソース全体を「完全に上書き」することを目的としたメソッドです。
特徴
- 指定したリソースをすべて新しいデータで置き換える
- 更新しない項目も含めて、全項目を送る必要がある
- 冪等性あり(何度送っても結果が同じ)
使用例
PUT /users/123 HTTP/1.1
Content-Type: application/json
{
"name": "Hanako",
"email": "hanako@example.com",
"age": 28
}
この場合、users/123の全情報が送信されたデータで上書きされます。
PATCH:リソースの一部を更新
PATCHは、リソースの一部だけを「部分的に更新」するためのメソッドです。
特徴
- 変更したい項目だけを送信すればよい
- PUTよりも効率的で通信量が少ない
- 冪等性は保証されない(サーバー側の設計による)
使用例
PATCH /users/123 HTTP/1.1
Content-Type: application/json
{
"email": "new-email@example.com"
}
この場合、emailフィールドだけが更新され、他のデータ(名前や年齢など)はそのまま維持されます。
PUTとPATCHの違いまとめ
| 項目 | PUT | PATCH |
|---|---|---|
| 更新対象 | 全体 | 一部 |
| データ送信量 | 多い(全項目) | 少ない(変更分のみ) |
| 冪等性 | あり | 通常なし |
| 利用目的 | 全上書きしたいとき | 一部だけ更新したいとき |
REST API設計でのベストプラクティス
| シナリオ | 適したメソッド | 理由 |
|---|---|---|
| ユーザーのすべての情報を編集する画面(保存ボタン) | PUT | 全項目を上書きするため |
| プロフィール画像だけを更新したい | PATCH | 1つのフィールドだけ更新するから |
| サーバーが部分更新に対応していない場合 | PUT | 一貫した更新処理のため |
どちらを使うべきか?
- PUTは「すべての情報がそろっていて、まるごと保存したい場合」
- PATCHは「一部だけ変更したい場合」や「フロントエンドから少しずつデータを送る場合」
また、サーバー側でPATCHの部分更新処理が複雑になることもあるため、開発側で仕様を統一することが重要です。
まとめ
PUTは全体の上書き、PATCHは一部の更新- 通信量や処理効率を考えると、更新内容によって使い分けが必要
- 冪等性の違いにも注意が必要(PUTは冪等、PATCHは非冪等)
REST APIを設計・利用するうえで、PUTとPATCHを正しく理解しておくことは非常に重要です。
プロジェクトや開発ルールに応じて、適切に使い分けましょう。



