GET方法如何是幂等的而POST不是。我们在表单提交中使用它,如果我们提交两次,它将重新提交表单数据。以及为什么我们没有使用GET来下订单或购买产品,例如当它是幂等的时候。
答案 0 :(得分:0)
幂等HTTP方法是一种HTTP方法,可以多次调用而不会产生不同的结果。如果只调用一次或十次调用该方法,则无关紧要。结果应该是一样的。同样,这仅适用于结果,而不适用于资源本身。
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方法,则每个新购买产品的请求的结果都会有所不同。
以下示例不是幂等的,因为对于每个新请求,结果都会不同
https://accounts.google.com/Login#identifier
应使用GET方法通过 URL 将信息从浏览器发送到服务器。以下是GET方法的示例用法。
http://www.google.co.in/search?q=cristiano+ronaldo
以下是评论中您的查询的答案:
当用户重新访问由表单提交产生的页面时,他们可能会从他们的历史堆栈(他们可能已经打算)中显示该页面,或者他们可能被告知该页面现已过期。用户对后者的典型反应是重新加载。
如果请求是幂等的,这是无害的,表单作者通过指定GET方法向浏览器发出信号。
浏览器通常会(确实“应该”)警告用户,如果他们即将重新提交POST请求,相信这会导致进一步“永久改变宇宙状态”,例如订购另一辆梅赛德斯 - 奔驰的信用卡或其他任何东西。如果用户在尝试重新加载无害的幂等请求时已经习惯了这种情况,那么当他们偶然[OK]请求时,迟早会咬他们。
现在,在实现这两个方法GET和POST时,开发人员应该考虑安全问题并在特定方法中编写代码。考虑到GET方法的所有限制(网址大小等),任何代码都可以用这两种方法编写,但这不是一个好习惯。
GET - >用于信息检索。(如果你想在不改变状态的情况下读取数据) POST - >用于信息创建/更新/删除。