Published on

PUTとPATCHの違いは何?

Authors
  • avatar
    Name
    ssu
    Twitter

Railsで良く見かけるPutとPatch。 これらの違いはなんでしょうか? 普段何気なく使っていると思いますが、これらの違いを簡単に紹介します。

PUTの意味と正しい使い方

PUTは、全てのリソースを変更するさいに利用するものです。

例えば、titleとbodyというカラムがあるBlogを更新するときの例で具体的に説明します。

PUTを使う際は、Blogのリソースを全て変更するようにリクエストを送らないとだめです。

そのため、PUTは下記のようなリクエストにすべきです。

// PUTの正しい使い方 PUT /blogs/1 { title: 'hoge', body: 'foo' }

しかしながら、以下のようにはすべきではありません。 これはPATCHの使い方になります。

// PUTの間違った使い方 PUT /blogs/1 { title: 'hoge' }

PATCHの意味と正しい使い方

PUTは全てのリソースを変更する際に利用するのに対して、 PATCHは一部のリソース変更に用いられます。

そのため、下記が正しく

// PATCHの正しい使い方 PATCH /blogs/1 { title: 'hoge' }

参考: use-of-put-vs-patch-methods-in-rest-api-real-life-scenarios

参考 RFC5789