HTTP PATCHは、HTTPリクエストを送信する時に使われるHTTPメソッドの1つになります。本文では、HTTP PATCHの基本情報を消化した上、簡単にPATCHリクエストを送信する方法を皆さんに紹介します。
Apidogは個人向け完全無料なツールとして、下記のボタンからこのツールを無料で取得することができます👇👇👇
HTTP PATCHとは?
HTTP PATCHは、HTTPプロトコルのメソッドの1つです。PATCHメソッドは、リソースの部分的な更新を行うために使用されます。PATCHリクエストには、更新したいフィールドと新しい値が含まれています。
HTTP PATCHの特徴と役割
HTTP PATCHというメソッドは次のような特徴があると考えられています:
- リソースの一部のみを更新できる
- 更新するフィールドと値のみを指定する
- 冪等性がない(同じリクエストを繰り返しても結果が変わる可能性がある)
PATCHを使用する場合、クライアントは更新対象のプロパティのみを送信するので、ネットワークトラフィックを削減できます。また、サーバ側はリソース全体を取得・シリアライズ・保存するコストが削減されます。その一方で、冪等性が保証されないという制限があります。
REST APIでPATCHメソッドが普及されていない?
REST APIの設計では、リソースの性質に応じて適切なHTTPメソッドを選択することが重要です。PATCHメソッドは、リソースの部分的な更新が必要な場合に適しているので、PATCHメソッドは重要な役割を果たします。
ただし、現段階ではすべてのHTTP APIもREST設計原則に従っているわけでもないので、PATCHリクエストは、GETやPOSTほど汎用されていないメソッドです。PATCHリクエストを使う必要がある場合は、現在、みんなもPOSTリクエストによって実行されているみたいですね。
HTTP PATCHの使用例
HTTP PATCHはPOSTやPUTのように、リクエストボディを利用してデータを渡します。また、前述のように、HTTP PATCHはデータの部分的な更新を行うために利用されることが多いのです。
そこで、PATCHリクエストで送信されたnameとageの値で、/users/12345リソースが部分的に上書きされる具体的な使用例を皆さんに紹介していきたいと思います。
PATCH前の/users/12345リソース:
{
"name": "Jane Doe",
"age": 32,
"id": 12345,
"phone": 456789
}
そして、次のようなPATCHリクエストをすると、
PATCH /users/12345 HTTP/1.1
Content-Type: application/json
{
"name": "John Smith",
"age": 35
}
この例では、/users/12345という既存のユーザーリソースに対してPATCHメソッドで部分更新を行っています。リクエストボディには、更新したいnameとageのプロパティのみを指定しています。これにより、それらのプロパティの値が更新されますが、他のプロパティは変更されませんので、PATCH後の/users/12345リソースは次のようになります。
{
"name": "John Smith",
"age": 35,
"id": 12345,
"phone": 456789
}
このように、PATCHリクエストのボディに含まれていなかったidとphoneのプロパティは変更されず、nameとageのみが更新されます。
また、PATCHリクエストのレスポンスのステータスコードは200や204が一般的です。
HTTP/1.1 204 No Content
このようにPATCHを使用することで、ネットワーク帯域幅やクライアント/サーバの処理コストを削減できます。一方で冪等性が保証されないという制約があります。
PATCHとPOSTとPUTの違い
HTTP POST、PUTやPATCHもリソースに対して書き込む操作を行うメソッドとして、どのような違いがあります。基本的には、POSTは新規作成に、PUTは全置き換えに、PATCHは部分的な更新に使用すると認識しては良いのですが、次は、より詳しい違いを解説していこうとおもいます。
HTTPのPOST、PUT、PATCHメソッドの違いをテーブル形式でまとめると、次のテーブルが作成されます:
項目 | POST | PUT | PATCH |
---|---|---|---|
主な用途 | 新規リソースの作成 | リソースの全置換 | リソースの部分更新 |
リクエストbody | 新規データ全体 | 更新後の全データ | 変更するデータのみ |
幂等性 | 保証される | 保証される | 保証されない |
ステータスコード | 201 Created | 200 OK、204 No Content | 200 OK、204 No Content |
主なポイントとして、やはりその用途にあると考えられています:
- POSTは新規リソース作成に使用します
- PUTはリソース全体を置き換えます
- PATCHは部分的な更新に使用します
- POSTとPUTは幂等性が保証されますが、PATCHは保証されない
そこで、特にREST APIを設計する時には、HTTPメソッドそれぞれの特徴を理解して適切に使い分ける必要があります。
Apidog:1クリックでPATCH/PUT/POSTを送信
PATCHリクエストを送信してリソースを書き込んだりするには、たくさんのツールやライブラリを利用することもできますが、一番簡単な対策は日本語対応API管理ツールのApidogを使用することです。
Apidogを使用すると、たった1クリックだけでPATCHリクエストを送信できます。また、送信したリクエストのデータを保存して、それに基づいてAPI仕様書を作成したり、さまざまなプログラミングの実装コードを生成したりすることも簡単に実行されますので、非常に便利です。
ApidogでPATCHリクエストを送信する場合、HTTPメソッドをPATCHに指定して、正確なAPIエンドポイントを記入した上、Body、Header情報を設定して簡単にそうできます。また、Bodyで特定なデータを送信するために、form-data、x-www-form-urlencoded、json、xml、rawやbinaryなどのフォーマットを選択することも可能です。

まとめ
この記事は、HTTPのPATCHメソッドについて皆さんに解説しました。PATCHはリソースの部分的な更新に利用されるHTTPメソッドになります。また、PATCHリクエストを簡単に実装するために、Apidogという使いやすいAPI管理ツールを使用することがおすすめです。
Apidogを使えば開発者がPATCHをはじめとしたHTTPリクエストの送受信をスムーズに行えますし、APIの設計・ドキュメント・コード生成を一貫して支援します。