結論
PUT:既存リソースを完全な上書き(もし既存リソースが存在しなければ新規作成)
PATCH:送信されたデータの範囲での部分的なリソースの上書き
現実ではほぼPUTしか利用されない(なぜならば、事実上PUTがUPDATEとUPSERTの両方に対応するのに対してPATCHがUPDATEにしか対応しないという点で、PUTはPATCHの機能を包含していると言えるため)
具体例
{
"FirstName": "太郎",
"LastName": "山田",
"age": 25,
"sex": male,
"State": Tokyo
}
上記のようなデータがあると仮定します。
このリソースに対して、次の“PUT”リクエストを送信してみます。
{
"FirstName": "一郎",
}
↓
{
"FirstName": "一郎",
}
すると結果はこの通り、完全にデータが上書きされ、LaseNameやageといった情報は消えてしまいます。
では同じリソースに対して“Patch”リクエストを送信するとどうなるでしょうか。
{
"FirstName": "一郎",
}
↓
{
"FirstName": "一郎",
"LastName": "山田",
"age": 25,
"sex": male,
"State": Tokyo
}
今度はFirstNameだけが更新され、それ以外の値は以前のままという結果になりました。
これがPUTとPATCHの違いです。
メソッド一覧
GET:リソースの現在の状態をJSONやXMLの形式で取得
POST:リソースの新規作成
DELETE:リソースの削除
PUT:リソースの完全置換(※リソースが存在しなければ新規作成)
PATCH:リソースの部分置換