Dan*_*nna 14 rest http idempotent
我最近花了很多时间阅读HTTP 1.1规范并将其与REST相关联.我发现HTTP DELETE方法在其"幂等性"和安全性方面有两种解释.以下是两个阵营:
如果删除具有HTTP DELETE的资源,并且它成功(200 OK),然后您尝试删除该资源N次,则应该为每个删除调用取回成功消息(200 OK) .这就是它的"幂等性".
如果删除具有HTTP DELETE的资源,并且成功(200 OK),然后再次尝试删除该资源,则应该返回错误消息(410 Gone),因为资源已被删除.
规范说DELETE是幂等的,当然,但它也说幂等事件的序列仍然会产生副作用.我真的觉得第二阵营是正确的,第一阵营是误导.我们引入了什么"安全",允许客户认为它们是删除以前删除的资源的原因?
在第一个阵营中有很多人,包括几个关于这个问题的作者,所以我想检查是否有一些令人信服的理由,而不是导致人们进入第一阵营的情绪.
Mic*_*urr 20
作为幂等并不意味着不允许请求产生副作用(这就是'安全'属性所描述的).这只是意味着多次发出相同的请求不会导致不同或额外的副作用.
在我看来,后续的DELETE请求应该返回一个错误 - 它仍然是幂等的,因为服务器的状态与只发出一个DELETE请求的状态相同.然后再次返回200 OK状态也应该没问题 - 我不认为幂等是要求为后续DELETE请求返回错误代码 - 只是返回错误状态似乎对我更有意义.
| 归档时间: |
|
| 查看次数: |
2997 次 |
| 最近记录: |