http://www.garfieldtech.com/blog/put-up-with-putからの質問の引用(これはDrupalオープンソースプロジェクト用であり、コードがないため少しメタです):
GET、HEAD、およびPUTはべき等ですが、ロギングや統計収集などの「偶発的な」副作用は問題なく、べき等の違反ではありません。RFC 2616には、べき等について次のように書かれています。
メソッドは、(エラーまたは有効期限の問題を除いて)N> 0の同一のリクエストの副作用が単一のリクエストの場合と同じであるという点で、「べき等」のプロパティを持つこともできます。メソッドGET、HEAD、PUT、およびDELETEは、このプロパティを共有します。(RFC 2616セクション9.1.2)
「副作用は同じ」という修飾子についてはよくわかりません。それはそれが同じ副作用の繰り返しである可能性があることを意味しますか、それともnet-0効果である可能性がありますか?
そして...私たちは前方改訂を許可してきました。つまり、まだデフォルトバージョンではないが、そうなる新しいバージョンを作成しています。それはべき等とPUTにどのように影響しますか?新しいリビジョンが作成された場合、PUTを繰り返すことは何の操作にもなりません。むしろ、それはさらに別のリビジョンを作成します。仕様によると:
単一のリソースは、多くの異なるURIによって識別される場合があります。たとえば、記事には、特定の各バージョンを識別するURIとは別の、「現在のバージョン」を識別するためのURIがある場合があります。この場合、一般的なURIに対するPUTリクエストにより、オリジンサーバーによって他のいくつかのURIが定義される可能性があります。
別の言い方をすれば:
PUT /node/5 {title: "Hello world"}
結果:
GET /node/5 {title: "Hello world"}
GET /node/5/revision/8 {title: "Hello world"}
そして、私が仕様を読んだことで、それはまったく問題ありません。ただし、次のことは何ですか。
PUT /node/5 {title: "Bonjour le monde"}
結果:
GET /node/5 {title: "Hello world"}
GET /node/5/revision/8 {title: "Hello world"}
GET /node/5/revision/9 {title: "Bonjour le monde"}
それはまだスペック有効な動作ですか?そうでない場合、それは、CRUDの代わりにCreate-Read-Archive-Purge(CRAP)モデルを使用するシステム、またはフォワードリビジョンをサポートするシステムが本質的にPUTと互換性がないことを意味しますか?