如果有小的副作用,可以使用 HTTP GET 吗?

Can HTTP GET be used if there are small side-effects?

据我所知,GET 必须是幂等的 - 它不能更改系统中的任何内容,并且重复它应该总是 return 相同,除非其他东西改变了应用程序的状态。

问题是,在我的网站上,根据用户之前是否已经看过某些内容,应该会有很多小的变化。我的意思是,像通知、新消息提醒、基于用户是否看到的内容排序、有多少用户看到内容计数器...例如,当用户点击通知时,通知应该从他的通知面板中消失,永远不会出现再次看到那里,所以它改变了一些东西 - 通知的状态,但我可以按 F5 多次,它总是 return 具有相同信息、相同按钮等的相同页面

我可以忽略这种副作用吗,因为它太小了,我可以使用 GET 还是我必须让网站上的大多数链接和按钮使用 POST 就像我对引导的链接和按钮所做的那样更多 "serious" 变化?我通过围绕每个表单制作表单,将这些链接作为表单操作,将原始按钮作为表单的提交按钮,这对我来说似乎有点混乱,我不希望它几乎无处不在(或者有更好的方法吗?) .

这可以从几个角度来解决,我从这个角度来阐述:

这里的最终结果总是相同的,因此请求幂等的。

用户访问URL,最终结果是通知被清除。他们可以一次又一次地访问该页面,最终结果是通知被清除。他们不会收到错误消息,因为通知先前已被清除(这不是幂等的)。是的,他们每次访问该页面时都会看到不同的内容,但没有人说每次请求资源时页面内容必须相同(这会使一半的网络陷入困境).

将其与对 /questions 的 POST 请求进行对比(例如,这会产生一个新问题):每次重复该 POST 请求时,都会获得一个全新的资源创建。您 POST 一次,/questions/12345 正在创建中。您重复相同的请求,正在创建 /questions/12346。即幂等

不,您不需要将所有这些请求都变成 POST 个请求。