它是REST中有效的GET方法,返回一些数据集,但过了一段时间,数据集可以被修改吗?

时间:2015-01-20 18:10:10

标签: rest http

我正在阅读"幂等方法",但不太明白。

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?

2 个答案:

答案 0 :(得分:3)

因为GET没有改变资源。这就是区别。

考虑:

GET /currenttime

完全有效的请求,幂等,但每次调用它时,你都会得到一个新的答案。

答案 1 :(得分:2)

  

幂等HTTP方法是一种HTTP方法,可以多次调用而不会产生不同的结果。如果只调用一次或十次调用该方法,则无关紧要。结果应该是一样的。

开头的句子有点不幸,但其余的解释得非常清楚。

这里要注意的关键点是结果不能被同一方法的任何后续调用改变。通过其他方式可以自由地改变资源的状态,即你GET的替换。

在您的示例中,不是GET请求正在更改数据库的状态。这是一个外在因素。

  

我的GET方法仍然是幂等的,还是应该更改为POST?

是的,你描述它的方式,它既是幂等的又安全的,因为它不会修改你的资源状态,并且如果其他方不改变调用之间的资源状态,它将总是产生相同的结果。调用它不会影响调用它的结果。