FreeStyleWiki

Railsメモ

このエントリーをはてなブックマークに追加

[Ruby,Rails]

Railsメモ

  更新系メソッドPUTとPATCHの違い

まず、「POST」と「PATCH/PUT」は大きくことなります。

その違いが「冪等性(べきとうせい)」というもの。

端的に言えば、「何度その処理(PUTやPOST)をしても、もとのデータは変わらないこと」を冪等性と言います

POSTは冪等性(idempotence)がない、と言われる

冪等

数学において、冪等性は、大雑把に言って、ある操作を1回行っても複数回行っても結果が同じであること

冪等という言葉の発明者はベンジャミン・パースだが、このHTTPにおける冪等性というのは数学の単項演算や写像の例とは違い、定式化されてないように思える。

「何回実行しても同じ結果になる=冪等」的なイメージでふわっと使われている。

英語版Wikipediaの記事がそれなりに腹落ちする内容なんだけど、微妙に納得がいかない。あんまり考えてもしょうがないか。

例えば

  • POST /articleを2回実行すると、記事が2つできるだろう。
  • PUT /article, PATCH /articleを2回実行しても、結果(リソースへの影響)は同じはず

その上でPUT/PATCHの違いはPUTがリソース全置換、PATCHがリソースの部分置き換えであるということだ。