我正在阅读"幂等方法",但不太明白。
1.1。所以GET方法必须是幂等的。
1.2。幂等HTTP方法是一种HTTP方法,可以多次调用而不会产生不同的结果。如果只调用一次或十次调用该方法,则无关紧要。结果应该是一样的。 - 请参阅:http://restcookbook.com/HTTP%20Methods/idempotency/#sthash.hW6zSUi7.dpuf
好的,这就是理论。现在具体案例:
2.1。我已经公开了一个GET方法,它返回DB中的所有记录。
2.2。有人打电话给这个方法,它返回了1000个结果。
2.3。应用程序正在运行,因此几分钟后我在DB中有1001条记录。
2.4。有人(可能是同一个调用者)再次调用此方法,现在它返回1001个结果。
我的GET方法仍然是幂等的,还是应该更改为POST?
答案 0 :(得分:3)
是
因为GET没有改变资源。这就是区别。
考虑:
GET /currenttime
完全有效的请求,幂等,但每次调用它时,你都会得到一个新的答案。
答案 1 :(得分:2)
幂等HTTP方法是一种HTTP方法,可以多次调用而不会产生不同的结果。如果只调用一次或十次调用该方法,则无关紧要。结果应该是一样的。
开头的句子有点不幸,但其余的解释得非常清楚。
这里要注意的关键点是结果不能被同一方法的任何后续调用改变。通过其他方式可以自由地改变资源的状态,即你GET
的替换。
在您的示例中,不是GET
请求正在更改数据库的状态。这是一个外在因素。
我的GET方法仍然是幂等的,还是应该更改为POST?
是的,你描述它的方式,它既是幂等的又安全的,因为它不会修改你的资源状态,并且如果其他方不改变调用之间的资源状态,它将总是产生相同的结果。调用它不会影响调用它的结果。