偶数性の背後にある基本的なことは、GET操作が操作の結果に影響しないということです。つまり、悪影響を及ぼすことなくGETを安全に繰り返すことができます。
ただし、冪等の要求はリソースの表現とは関係ありません。
二つの不自然な例:
GET /current-time
GET /current-weather/90210
明らかであるように、これらのリソースは、時間の経過とともに変化する、いくつかのリソースは、より迅速に他よりも変化します。しかし、GET操作自体は、実際のリソースに影響を与えることに密接に関連していません。
コントラスト:
GET /next-counter
これは私がべき等の要求、ないと思い、明らかに、です。要求自体がリソースを変更しています。
また、偶数演算には副作用がないということは何もありません。明らかに、GETを含む多くのシステムログへのアクセスと要求。したがって、GET/resourceを実行すると、そのGETの結果としてログが変更されます。そのような副作用は、GETを冪等ではない。基本的な前提は、リソース自体への影響です。
しかし、何について、言う:
GET /logs
ログはすべてのリクエストを登録し、GETは彼らの現在の状態でログを返却された場合、それはこのケースでGETが冪等されていないことを意味するのでしょうか?うん!それは本当に重要ですか?いいえ。この1つのエッジの場合ではありません。ゲームの性質。
何について:
GET /random-number
あなたは、擬似乱数生成器を使用している場合は、自分の際にこれらの飼料のほとんど。種子から始めて、次の数字を得るために結果を自分に戻します。だから、ここでGETを使うことは、冪等ではないかもしれません。しかしそれは?どのように乱数が生成されるのかあなたはどのように知っていますか?それは白色雑音源である可能性があります。そしてなぜあなたは気にしますか?リソースが単なる乱数である場合、実際に操作が変更しているかどうかはわかりません。
ただし、ガイドラインの例外がある可能性があるため、必ずしもそのガイドラインの背後にある概念を無効にするわけではありません。
リソースが変化すると、それは人生の単純な事実です。リソースの表現は、普遍的なものでなくても、一貫性のある要求であっても、一貫性のあるユーザーであってもかまいません。言い換えれば、リソースの表現はGETが提供するものであり、各要求の表現を決定する基準を誰が知っているかは、アプリケーションに依存します。 Idempotentリクエストは、RESTモデルの残りの部分(キャッシングやコンテンツネゴシエーションなど)とうまく機能するため、非常に優れています。
ほとんどのリソースは素早く変更されず、非冪等動詞を使用して特定のトランザクションに依存するため、クライアントにとってより予測可能で一貫性のあるインターフェースが提供されます。メソッドが冪等でなければならない場合、クライアントは大したことではないと判明するとかなり驚くでしょう。しかし、結局のところ、アプリケーションとドキュメント化されたインターフェイスまでです。
タイトルのニース編集! –