在大多数论坛软件上都有一个功能,每当有人阅读某个主题时,该主题的计数器就会增加。这允许用户查看有多少回复,以及主题被读取的次数,例如,决定他们是否想参加某个主题。
示例:
Replies Views
hydro locked 3.2 M engine worth fixing? 81 2037
Japan Gets BMW M5 Limited Edition Model 760 16392
...
...
当我点击第一个主题时,肯定会发生GET,我可以阅读该主题。
现在,如果有其他人在我之后来到网站,他会看到:
Replies Views
hydro locked 3.2 M engine worth fixing? 81 2038
Japan Gets BMW M5 Limited Edition Model 760 16392
...
...
因此,第一个主题的观看次数正确地从2037年到2038年。该计数器显然存储在服务器端。
所以我的问题很简单:如果服务器上发生了修改,GET如何才能成为幂等的?
请注意,在所有这些论坛软件中,视图的数量是网站不可或缺的一部分:一个回复非常少的主题,但很多视图通常比一个回复非常少的主题和例如,很少有观点。
我了解您可以将某些内容(例如分析)卸载到外部服务(例如Google Analytics),这些内容可以为您提供诸如综合浏览量,浏览器类型等内容。 但是当用户获取资源的行为是您网站不可或缺的一部分时呢?它可以是论坛或拍卖或其他......
GET正在修改服务器上的状态的网站很多。这是否意味着这些网站永远不会是RESTful?
答案 0 :(得分:3)
GET
是幂等的背后的原因是客户端不应该关心多次获取资源的影响。您不希望在资源上执行GET
并让它在论坛中创建主题,因为浏览器不会将请求视为具有任何副作用,并且每次URL都会快乐地发布重复项被击中了。
对于POST
请求,大多数浏览器的行为都不同,他们会要求您确认确实想要将请求重新提交给服务器,知道它可能有你可能会关心的后果。
我有信心说,这是可以产生这种副作用的情况之一,因为后果非常小,最终用户不会在乎第二次意外地请求资源。
我还建议您希望对您认为“视图”的内容保持警惕,这样它不仅仅计算在资源上执行GET
的次数。这样,重复请求就不被视为视图,并且幂等性的点变得更不相关。