Http 如何实施";“意见”;以平静的方式反击?

Http 如何实施";“意见”;以平静的方式反击?,http,rest,get,Http,Rest,Get,大多数论坛软件都有一个功能,每当有人阅读某个主题时,该主题的计数器就会递增。这允许用户查看回复的数量以及阅读主题的次数,例如,用于决定是否参与主题 例如: Replies Views hydro locked 3.2 M engine worth fixing? 81 2037 Japan Gets BMW M5 Limited Edition Model 760

大多数论坛软件都有一个功能,每当有人阅读某个主题时,该主题的计数器就会递增。这允许用户查看回复的数量以及阅读主题的次数,例如,用于决定是否参与主题

例如:

                                           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成为幂等的?

请注意,在所有这些论坛软件上,视图的数量是网站不可或缺的一部分:例如,回复很少但视图很多的主题通常比回复很少且视图很少的主题更有趣

我知道你可以将某些东西(比如分析)转移到外部服务(比如谷歌分析),这些服务可以计算你的页面浏览量、浏览器类型等。 但是,当用户获取资源的行为本身就是站点的组成部分时,该怎么办?它可以是论坛或者拍卖或者其他什么


有很多站点GET正在修改服务器上的状态。这是否意味着这些站点永远都不可能是RESTful的?

GET
是幂等的背后的原因是客户端不必担心多次获取资源的影响。您不希望对资源执行
GET
,并让它在论坛中创建主题,因为浏览器不会将请求视为有任何副作用,并且会在每次点击URL时愉快地发布一个副本

对于
POST
请求,大多数浏览器的行为都是不同的,他们会要求您确认是否确实要向服务器重新提交请求,因为您知道这可能会产生您关心的后果

我有信心地说,这是一种可以产生这种副作用的情况,因为后果非常小,最终用户不会在意再次意外请求资源

我也建议你要对你所认为的“视图”很聪明,这样它不仅计算了在资源上执行了<代码>获取/代码>的次数。这样,重复的请求就不会被视为视图,而幂等性的观点就变得更加不相关了