我读过很多HTTP是非幂等的地方。有人能解释一下为什么它不是幂等的吗?因为根据定义-幂等方法可以也可能不会改变资源状态,但是重复的请求在第一个请求之后不会有进一步的副作用。重复的修补程序请求如何更改资源状态?
发布于 2015-03-21 22:17:52
对此有些困惑。补丁方法不是要求的是幂等的,这就是重点。客户端不能假设他们的补丁请求将是幂等的,因为他们可以使用PUT和GET。
如果某个特定的实现是幂等的或者不是幂等的,通常取决于所使用的修补算法(如果有的话)。例如,没有使用diff格式来验证当前值的糟糕的实现不会是幂等的。
发布于 2021-03-16 20:49:52
是的,有很多的讨论和困惑如何放置和补丁不同。清楚的是:
放
补丁
从这些规则中,我们可以推断出我们需要在后端实现的一些规则,例如:
a)
username: 'john', email: 'old@email.com'}username: 'john'}从API (缺少email)发送验证错误或电子邮件将被删除。
我真的希望API应该返回验证错误。因此,要删除某些值,客户端应该调用(请求中提到的显式email: null ):
username: 'john', email: null}b)
username: 'john'}服务器上没有变化。若要删除值,客户端应发送:
email: null}上述两个例子都是幂等的。
在另一个讨论中,如果修补程序在后端的集合中执行类似于"add“的操作:Use of PUT vs PATCH methods in REST API real life scenarios,则该修补程序是非幂等的。
发布于 2021-12-26 10:43:43
补丁不一定是幂等的,尽管它可以。将此与PUT进行对比;PUT总是幂等的。“幂等”一词意味着任何数量的重复、相同的请求都将使资源处于同一状态。例如,如果自动递增计数器字段是资源的一个组成部分,那么PUT就会自然地覆盖它(因为它覆盖了所有内容),但是对于补丁来说并不一定如此。
https://stackoverflow.com/questions/29186613
复制相似问题