8

所以我们有一个取消订阅链接——这本质上是一个 HTTP GET。

适当的RFC说这应该是幂等的,但在我看来,用户期望他们单击​​链接以采取行动。

我已经实现了这一点,以便链接将您带到一个页面,该页面有一个大的确认按钮,然后更新您的订阅,确认并显示您帐户的最终状态(我们有不止一种类型的订阅)

但是我想知道如果这个人只是跳过了确认按钮阶段,这会不会是一个更好的用户体验......

“我是不是想多了?”这个问题的答案 肯定是的,但我想知道人们对平衡幂等 GET 的最佳实践与不混淆用户期望的最佳实践的看法是什么……

4

3 回答 3

6

我想说RFC2616第 9.1.2 节所说的并不重要,因为您已经违反了第 9.1.1 节中更重要的定义:

特别是,已经建立了约定,即 GET 和 HEAD 方法不应该具有采取除检索之外的操作的意义。

想象一下,一个网络爬虫(例如,谷歌)跟踪来自您的包含此链接的一个页面的所有链接的效果。你真的希望这会导致取消订阅操作吗?那肯定是糟糕的用户体验!

于 2011-08-10T13:28:02.033 回答
1

在这种情况下,幂等意味着无论您单击链接多少次,它都会做同样的事情,即取消订阅您。有一些解决方案会在您返回时重新订阅您,这是一种触发器方法,即非幂等。您是否将其实现为立即取消订阅(作为有足够动力单击链接的用户,我的首选方法是确保这是他们想要做的)或带有确认的页面取决于您。只需确保无论用户点击您的链接多少次并完成他们所完成的流程,在链接结束时,仍然从您的列表中退订。

于 2011-08-10T11:43:46.377 回答
1

有趣的问题不是它是否是幂等的,而是它是否安全。它不是,因此一个简单的 GET(例如,它可能是预取的)是错误的。

于 2011-08-10T13:06:38.647 回答