Jan*_*Jan 8 html get http idempotent
据我了解, GET 必须是幂等的 - 它不能改变系统中的任何内容,并且重复它应该始终返回相同的结果,除非其他东西改变了应用程序的状态。
问题是,在我的网站上,根据用户之前是否已经看过某些内容,应该有很多小的变化。我的意思是,像通知、新消息提醒、根据用户是否看到的内容排序、有多少用户看到内容计数器...例如,当用户单击通知时,通知应该从他的通知面板中消失,并且永远不会出现。再次看到那里,所以它改变了一些东西 - 通知的状态,但我可以根据需要多次按 F5,它总是返回具有相同信息、相同按钮等的相同页面。
我可以忽略这种副作用,因为它太小了,我可以使用 GET,还是我必须让网站上的大多数链接和按钮使用 POST,就像我对链接和按钮所做的那样,从而导致更“严重”的更改?我通过围绕每个表单制作表单来实现这一点,其中这些链接作为表单操作,原始按钮作为表单的提交按钮,这对我来说似乎有点混乱,我不希望它几乎无处不在(或者有更好的方法吗?) 。
这个问题可以从几个角度来解决,我从这个角度来阐述:
这里的最终结果总是相同的,因此请求是幂等的。
用户访问该URL,最终结果是通知被清除。他们可以一次又一次地访问该页面,最终结果是通知被清除。他们不会收到错误消息,因为通知之前已被清除(这不会是幂等的)。是的,他们每次访问页面时都会看到不同的内容,但没有任何规定每次请求资源时页面内容必须相同(这将使一半的网络陷入绑定)。
与 POST 请求/questions(例如,它创建一个新问题)进行对比:每次重复该 POST 请求时,都会创建一个全新的资源。您发布一次,并且/questions/12345正在创建。您重复相同的请求,/questions/12346正在创建。那不是幂等的。
不,您不需要将所有这些请求都放入 POST 请求中。
| 归档时间: |
|
| 查看次数: |
2570 次 |
| 最近记录: |