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