RESTにおけるPUTとPATCHの違い

By | November 7, 2020

結論

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:リソースの部分置換

Author: Regardie

Salesforce & AWS Enthusiast.