在REST API中,对同一个URL的GET请求应该返回相同的响应。我将其用于静态资源,但是如果我,例如,通过json响应获取用户数据,然后POST一些更改,我希望如果我稍后再做一次GET请求,则会反映出这些更改。 / p>
Eigther我应该使用另一个动词(我认为我正在很好地实现GETting的想法)或者这种风格与AJAX不相称。可能都是。
答案 0 :(得分:1)
不要混淆“幂等”和“安全”的概念。 GET是“安全的”,因为服务器不应该因GET而改变任何可观察状态。客户端可以在同一URL上发出它想要的GET,而无需更改服务器上的任何状态。幂等意味着“如果多次发出相同的请求,则服务器状态将始终与仅发出一个请求的结果相同”。
这与说“服务器将始终向GET返回相同的响应”不同,因此您的基本假设是错误的:GET每次都可以返回新的结果。以一天中的时间资源为例 - 它总是会为每个请求返回一个新值。
答案 1 :(得分:-1)
GET的幂等性假设没有其他操作。正如http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html中所概述的那样,即使所有执行的方法都是幂等的,多个请求的序列也不是幂等的。
因此,两个GET请求可能会返回不同的数据,因此我们可以使用客户端可以使用的ETag概念,结合If-Match等前提条件类型的头,来检测是否发生了更改