はじめに
PUT と PATCH はどちらもHTTPプロトコルのメソッドで、リソースを更新するために使用されますが、その動作に違いがあります。
特にAPI設計を行う際、どちらを選ぶべきかを理解しておくことが重要だと感じたためです。
なお、本記事は個人的な備忘録としてまとめたものです。その点をご理解いただければ幸いです。
書こうと思ったきっかけ
受講しているITスクールのハッカソン活動において、バックエンド担当の方がAPI設計を行っていました。
その中で、基本的なHTTPメソッドについては理解できていたものの、PUT と PATCH の違いがよく分からず、混乱する自分がいました。
そこで、自分の頭の中を整理するため、さらに同じような疑問を抱える方の参考になればと思い、今回記事としてまとめてみました。
まず、簡単な違いとどちらを使うべきか?
- PUT を使用するのは、リソース全体を明示的に置き換えたい場合。
- PATCH を使用するのは、リソースの一部だけを更新したい場合。
1. PUT: リソースの完全置換
-
動作
- リソース全体を置き換えます。
- クライアントが送信するデータがリソース全体の状態を表します。
- 送信しないフィールドはサーバー上で削除されます。
-
特徴
- 冪等性: 同じリクエストを何回送っても結果が変わりません。
- 主にリソース全体を更新、または作成(リソースが存在しない場合)する際に使用されます。
例
PUT /users/123
{
"name": "Alice",
"age": 30,
"email": "alice@example.com"
}
上記のリクエストでは、123
のユーザーリソース全体がこのデータで置き換えられます。
2. PATCH: リソースの部分更新
-
動作
- リソースの一部だけを更新します。
- クライアントは更新するフィールドだけを送信します。
- 送信しないフィールドはサーバー上でそのまま保持されます。
-
特徴
- 部分更新に適しています。
- 冪等性: 通常期待されますが、API設計によって異なる場合があります。
例
PATCH /users/123
{
"email": "alice.new@example.com"
}
上記のリクエストでは、123
のユーザーのメールアドレスだけが更新されます。他のフィールド(name
や age
など)は変更されず、そのまま保持されます。
PUTとPATCHの主な違い
PUTとPATCHの違いを、自分なりに簡単な表にまとめました。必要に応じて参考にしてください。
特徴 | PUT | PATCH |
---|---|---|
更新対象 | リソース全体の置換 | リソースの部分更新 |
冪等性 | あり(複数回実行しても結果が変わらない) | あり(通常は冪等性が期待される) |
データ量 | 全データを送信 | 必要な部分だけ送信 |
用途 | リソース全体の更新や新規作成 | リソースの一部だけ変更 |
まとめ
PUTはリソース全体を置き換える際に使用し、PATCHはリソースの一部を更新する場合に適しています。
PUTは全データを送信するのに対し、PATCHは必要な部分のみ送信します。
今後もこのような基本的な内容を丁寧にまとめ、自分の知識としてしっかりと定着させていきたいと思います。