Table of Contents
PUTとPATCHの違いをあまり気にしてこなかった
基本的にフロントエンドなので、仕様書に書かれているメソッドでAPIと通信してきた。
ただ今回、自身が作る側に回り、PUTとPATCHの違いがいまいちピンとこなかったので、調べてみた。
結論
PUTはリソースの完全な置き換えで、PATCHはリソースの一部分のみを更新する場合とのこと。
例えば、
{ "name": "John Doe", "age": 30, "email": "john@example.com"}というデータがあり、31歳に変更する場合を考えてみる。
PUTの場合
PUT /users/123 HTTP/1.1Host: example.comContent-Type: application/json
{ "name": "John Doe", "age": 31, "email": "john@example.com"}といった感じに変更した年齢以外もまるっと送る必要がある。
PATCHの場合
対してPATCHの場合は、
PATCH /users/123 HTTP/1.1Host: example.comContent-Type: application/json
{ "age": 31}となる。
どっちを使うべきか
まあ、この感じだと一部だけを更新したい場合はPATCHを使用するべきなんだと思うけど、その場合はフォームの一部だけが変更されたという監視が必要になるので、それなりの工数がかかる。そのためPUTでいいかなといった結論になりました。