2016-09-20 2 views
1

GETメソッドが冪等であり、POSTがそうでない方法。私たちはそれを2回提出すれば、フォームデータの再提出をフォーム提出に使用しています。そして、なぜ、それが冪等であるときなど、商品の発注や購入にGETを使用しないのですか?GETメソッドが冪等である方法

答えて

0

等価HTTPメソッドは、異なる結果を何度も出すことができるHTTPメソッドです。メソッドが1回だけ呼び出されるか、10回以上呼び出されるかは関係ありません。結果は同じでなければなりません。この場合も、結果はリソース自体には適用されません。

a=10; //This is idempotent: no matter how many times we execute this statement, a will always be 4. 
a++; //This is not idempotent. Executing this 10 times will result in a different outcome as when running 5 times. 

あなたの質問にお答えください。
GETメソッドを使用して商品を注文/購入する場合、商品が在庫切れになっても注文は行われます。対照的に、to POSTメソッドを使用すると、製品の購入のための新しいリクエストごとに結果が異なります。例以下は

があるため、すべての新規リクエストの結果がGETメソッドは、URLでサーバにブラウザから情報を送信するために使用されなければならない

https://accounts.google.com/Login#identifier 

異なるものになるべき等されていません。以下は、GETメソッドの使用例です。以下は

http://www.google.co.in/search?q=cristiano+ronaldo 

コメントでクエリへの答えです:

ユーザーがフォームの送信に起因するページを再訪すると、彼らは彼らの履歴スタックからページが表示される場合があります(これは、彼らがおそらく意図していたかもしれない)、またはページが現在期限切れになったと聞かれるかもしれない。後者に対する典型的なユーザーの応答はReloadを押すことです。

リクエストが冪等であれば無害です。これは、フォーム作成者がGETメソッドを指定してブラウザに通知するものです。

ブラウザは、POST要求を再提出しようとしている場合、これがさらに "宇宙の状態に永続的な変化"を引き起こすと考えている(実際にはそうだ)。彼らのクレジットカードや他のメルセデス・ベンツに注文すること。ユーザーが無害な冪等のリクエストをリロードしようとしたときにこのようなことに慣れてしまった場合、遅かれ早かれ、リクエストをしっかりと[OK]したときに、それを噛んでしまいます。

GETとPOSTの2つのメソッドを実装する際、開発者はセキュリティの問題を考慮して、特定のメソッドでコードを記述する必要があります。 GETメソッド(URLのサイズなど)のすべての制限を考慮して、両方のメソッドにコードを書くことができますが、これは良い方法ではありません。

GET - >情報検索用(状態を変更せずにデータを読み取る場合)
POST - 情報の作成/更新/削除用。

+0

GETメソッドでは、更新を2回行うか、戻るボタンをクリックして再度送信ボタンをクリックします。それは2回か1回だけ置かれますか? – Dhivakar

+0

これを最初にお試しください。 –

+0

私は試みましたが、私は正確な解決策を得ることができませんでした。あなたが気にしていない場合は、偶数を反映するGETとPOSTの例を与えることができます – Dhivakar

関連する問題