最近我花了很多时间阅读HTTP 1.1规范并将其与REST相关联。关于HTTP DELETE方法的“幂等性”和安全性,我发现有两种解释。这里是两个不同的观点:
如果你使用HTTP DELETE删除一个资源,并且它成功(200 OK),然后你尝试N次删除该资源,每一次删除调用都应该返回成功消息(200 OK)。这就是它的“幂等性”。
如果你使用HTTP DELETE删除一个资源,并且它成功(200 OK),然后你再次尝试删除该资源,你应该得到错误消息(410 Gone),因为资源已被删除。
规范说DELETE是幂等的,当然,但它也说幂等事件序列仍然可以产生副作用。我真的觉得第二个观点是正确的,第一个观点是误导人的。让客户端认为他们是先前删除资源的原因,我们引入了什么“安全性”呢?
有很多人属于第一个阵营,包括几位作者在内,所以我想确认除了情感之外是否还有其他令人信服的理由让人们倾向于第一个阵营。