PUTとPATCHの違いとは?初心者向けに更新方法・使い分け・APIでの利用例をわかりやすく解説
結論
PUTとPATCHは、どちらもWebシステムやAPIでデータを更新するためのHTTPメソッドです。違いは更新方法にあります。PUTはデータ全体を更新するのに対し、PATCHは変更したい項目だけを更新するのが基本です。
IT業務では、REST APIのテストやシステム連携、クラウドサービスとの連携などで頻繁に利用されるため、違いを理解しておくことが重要です。
PUTとPATCHとは
PUTとPATCHは、HTTP(HyperText Transfer Protocol)の更新処理で利用されるメソッドです。
| 項目 | PUT | PATCH |
|---|---|---|
| 用途 | データ全体の更新 | 一部項目の更新 |
| 送信するデータ | 全項目 | 変更する項目のみ |
| 通信量 | 多くなりやすい | 少なく済む |
| APIでの利用 | 設定情報の上書き | 一部の値だけ変更 |
どんな場面で使われるのか
PUTを使う場面
- ユーザー情報をすべて更新する
- 設定情報を丸ごと変更する
- 既存データを新しい内容へ置き換える
例として、社員情報を更新する場合、氏名・住所・電話番号・メールアドレスなど、すべての情報を送信して更新します。
PATCHを使う場面
- 電話番号だけ変更する
- メールアドレスだけ変更する
- ステータスだけ変更する
- パスワードだけ変更する
変更する項目だけを送信するため、通信量を抑えられます。
PUTとPATCHのイメージ
社員情報が次のようになっているとします。
| 項目 | 現在の値 |
|---|---|
| 氏名 | 山田 太郎 |
| 部署 | 営業部 |
| 電話番号 | 03-1111-1111 |
| メール | yamada@example.co.jp |
PUTの場合
電話番号だけ変更したい場合でも、氏名・部署・電話番号・メールアドレスなど、すべての情報を送信して更新します。
PATCHの場合
電話番号だけ変更する場合は、その項目だけ送信します。
不要なデータを送らずに済むため、効率よく更新できます。
なぜ使い分けるのか
更新方法を区別することで、データの整合性や通信効率を保てるためです。
PUTは全体を最新状態へ置き換える処理に向いています。一方、PATCHは変更箇所だけを更新するため、ネットワーク負荷を抑えられます。
初心者が混乱しやすいポイント
PUTは「追加」ではない
PUTは既存データを更新する目的で利用されます。APIによっては存在しないデータを新規作成する場合もありますが、多くの業務システムでは更新として利用されています。
PATCHは必ず一部更新とは限らない
仕様によってはPATCHでも複数項目をまとめて更新できます。重要なのは、「必要な項目だけ送信できる」という点です。
API仕様書を確認する
同じ更新処理でも、システムによってPUTを使う場合とPATCHを使う場合があります。実際の業務ではAPI仕様書を確認することが大切です。
実際のIT現場での利用例
- Microsoft Graph API
- クラウドサービスとのAPI連携
- 顧客情報の更新
- ユーザー設定の変更
- 在庫情報の更新
- 社内システムのREST API
最近のクラウドサービスでは、PATCHを利用した一部更新が採用されるケースが増えています。
筆者が現場で経験した失敗談
APIの動作確認でPATCHを使うべき処理にPUTを実行し、変更しない項目まで上書きしてしまったことがありました。その結果、一部の設定値が初期値へ戻ってしまい、原因調査に時間がかかりました。
更新系APIでは「全体更新なのか、一部更新なのか」を確認してから実行することが重要です。
業務でよくあるトラブル
- PUTで不要なデータまで上書きする
- PATCHで必須項目を送信していない
- API仕様と異なるHTTPメソッドを利用する
- 405 Method Not Allowedエラーが発生する
- 更新後のデータが意図しない内容になる
原因の切り分け
| 確認項目 | 内容 |
|---|---|
| HTTPメソッド | PUTかPATCHか |
| 送信データ | 必要な項目が含まれているか |
| API仕様 | 対応メソッドを確認する |
| HTTPステータスコード | 正常終了かエラーか |
| レスポンス内容 | 更新結果を確認する |
確認する順番
- API仕様書を確認する
- PUTとPATCHの指定を確認する
- 送信データを確認する
- HTTPステータスコードを確認する
- 更新結果を確認する
- サーバーログを確認する
GUIで確認する方法
Google Chrome
- F12キーを押す
- Networkを開く
- 更新処理を実行する
- 対象通信を選択する
- Method欄でPUTまたはPATCHを確認する
HeadersではHTTPメソッド、Payloadでは送信したデータを確認できます。
コマンドプロンプトで確認する方法
PUT
curl -X PUT https://example.com/api/users/100
PATCH
curl -X PATCH https://example.com/api/users/100
APIテストではJSONデータを送信して更新結果を確認します。
PowerShellで確認する方法
PowerShellではInvoke-RestMethodやInvoke-WebRequestを利用してPUTやPATCHを実行できます。
APIの更新テストや自動化スクリプトでよく利用されます。
ログの確認方法
- IISログ
- Apacheアクセスログ
- Nginxアクセスログ
- アプリケーションログ
- APIログ
更新処理が成功したか、どのHTTPメソッドで実行されたかを確認できます。
イベントビューアーの確認方法
PUTやPATCH自体はイベントビューアーへ記録されません。
WebサービスやAPIサーバーでエラーが発生している場合は確認します。
- Windows+Rキー
- eventvwr.msc を入力する
- Windowsログ
- アプリケーション
- エラーや警告を確認する
確認結果の見方
| HTTPステータスコード | 意味 |
|---|---|
| 200 OK | 更新成功 |
| 204 No Content | 更新成功(戻り値なし) |
| 400 Bad Request | 送信内容に誤り |
| 401 Unauthorized | 認証エラー |
| 403 Forbidden | 権限不足 |
| 404 Not Found | 対象データが存在しない |
| 405 Method Not Allowed | HTTPメソッドが誤っている |
| 500 Internal Server Error | サーバー内部エラー |
影響範囲を考える
- 更新対象が1件か複数件か
- 他ユーザーへ影響があるか
- データベース全体へ影響するか
- API全体の問題か特定機能だけか
- 認証や権限の問題か
ユーザー側・サーバー側の切り分け
| 確認対象 | 例 |
|---|---|
| ユーザー側 | 送信データ、認証情報、HTTPメソッド |
| サーバー側 | API、データベース、アプリケーション |
| ネットワーク | FW、プロキシ、通信制御 |
| 権限 | 更新権限の有無 |
初心者がやりがちなミス
- PUTとPATCHを同じ意味だと思う
- PUTで一部の項目しか送信しない
- PATCHで更新できる項目を確認しない
- API仕様書を読まずにテストする
- HTTPステータスコードを確認しない
業務で上司へ報告するポイント
- 実行したHTTPメソッド
- 対象APIのURL
- 送信したデータ
- HTTPステータスコード
- レスポンス内容
- 発生日時
- 影響範囲
- 実施した確認内容
エスカレーションするタイミング
- 更新結果が仕様と異なる
- 500エラーが継続する
- 大量のデータが意図せず更新された
- ログに例外が記録されている
- 本番データへ影響する可能性がある
GET・POST・PUT・PATCHの違い
| HTTPメソッド | 用途 | 特徴 |
|---|---|---|
| GET | 取得 | データを取得する |
| POST | 登録 | 新しいデータを作成する |
| PUT | 更新 | データ全体を更新する |
| PATCH | 更新 | 変更箇所だけ更新する |
関連するIT用語
- HTTP
- HTTPS
- REST API
- JSON
- HTTPステータスコード
- Web API
- curl
- PowerShell
- CRUD
よくある質問(FAQ)
PUTとPATCHはどちらを使えばよいですか?
API仕様書で指定されているHTTPメソッドを使用します。一般的には、全体を更新する場合はPUT、一部だけ更新する場合はPATCHを使用します。
PUTで一部の項目だけ送信しても問題ありませんか?
APIの実装によりますが、送信していない項目が初期値や空の値で上書きされる場合があります。PUTを使用する際は、必要な項目をすべて送信することを推奨します。
PATCHの方が通信量は少なくなりますか?
はい。変更する項目だけを送信するため、一般的にはPUTより通信量を抑えられます。
POSTでも更新できますか?
システムによってはPOSTを更新処理に利用することもあります。ただし、REST APIでは更新処理にはPUTまたはPATCHを使用する設計が一般的です。
まとめ
PUTとPATCHはどちらもデータ更新に使用されるHTTPメソッドですが、PUTはデータ全体を更新し、PATCHは必要な項目だけを更新するという違いがあります。
IT業務では、REST APIの仕様書を確認し、適切なHTTPメソッドを使用することが重要です。特にPUTは送信していない項目まで影響する可能性があるため、更新前には送信内容を十分に確認しましょう。PATCHは通信量を抑えながら柔軟に更新できるため、クラウドサービスやモダンなWeb APIで広く利用されています。

コメント