1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

REST APIの設計に置いて更新系のリクエストはHTTPのPUTとPATCHが担う事になっている。

それらの違いが気になったので少し調べた

結論

PUTとPATCHの違いは冪等性にある。

PUTはリソースの完全な置き換えを行うため、同じリクエストを何度行っても同じ結果が返ってくる。

一方でPATCHはリソースの部分的な更新を行うため、同じリクエストを何度行っても同じ結果が返ってくるとは限らない。

PUT

PUTはリソースの完全な置き換えを行うため、リクエストボディにはリソースの完全な情報を含める必要がある。

同じリクエストを何度実行しても、サーバー上のリソースの状態は最初の実行後と変わりません。(つまり冪等性を持つ)

またPUTはリソースが存在しない場合は新規作成を行う。

PATCH

PATCHはリソースの部分的な更新を行うため、リクエストボディには更新したいリソースの一部の情報だけを含める。

同じリクエストを何度実行しても、サーバー上のリソースの状態は最初の実行後と異なる可能性があります。(つまり冪等性を持たない)

そのためPATCHはPUTと異なり、リソースの完全な情報を含める必要がないため、リクエストボディのサイズが小さくなる場合があります。

まとめ

サービスの動きによって使い分けるのであれば

  • PUT: オブジェクトストレージなどのリソースの完全な置き換えを行う場合
  • PATCH: データベースなどのリソースの部分的な更新を行う場合

が適切かと思われる。

(がPUTを使ってよいのでは)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?