【发布时间】:2016-12-28 09:45:26
【问题描述】:
据我所知,GET 必须是幂等的 - 它不能更改系统中的任何内容,并且重复它应该始终返回相同的结果,除非有其他东西改变了应用程序的状态。
问题是,在我的网站上,根据用户之前是否已经看过某些内容,应该会有很多小的变化。我的意思是,像通知、新消息警报、基于用户是否看到的内容排序、有多少用户看到了内容计数器......例如,当用户点击通知时,通知应该从他的通知面板中消失,并且永远不会再次看到那里,所以它改变了一些东西 - 通知的状态,但我可以按我想要的次数按 F5,它总是返回具有相同信息、相同按钮等的相同页面。
我可以忽略这种副作用太小,我可以使用 GET 还是我必须让网站上的大多数链接和按钮使用 POST,就像我对链接和按钮所做的那样,这会导致更“严重”的变化?我通过在每个表单周围制作表单,将这些链接作为表单操作,将原始按钮作为表单的提交按钮,这对我来说似乎有点混乱,而且我几乎不希望它无处不在(或者有更好的方法吗?) .
【问题讨论】:
-
更重要的问题是请求是否安全,见greenbytes.de/tech/webdav/rfc7231.html#safe.methods
-
This related answer 提供了一些基于 RFC 7231 的见解。
标签: html http get idempotent