gpt4 book ai didi

http - PUT 和 POST 之间有什么区别,为什么 PUT 被认为是幂等的?

转载 作者:可可西里 更新时间:2023-11-01 16:35:46 26 4
gpt4 key购买 nike

到处都说[看了很多帖子] PUT 是幂等的,意味着具有相同输入的多个请求将产生与第一个请求相同的结果。

但是,如果我们使用 POST 方法发出具有相同输入的相同请求,那么它又将表现为 PUT。

那么,PUT 和 POST 在幂等性方面有什么区别。

最佳答案

想法是 POST 和 PUT 之间应该有区别,而不是有任何区别。需要澄清的是,POST 请求理想情况下应该创建一个新资源,而 PUT 请求应该用于更新现有资源。因此,发送两个 POST 请求的客户端将创建两个资源,而两个 PUT 请求不会(或者更确切地说不应该)导致任何不需要的更改。

更详细地说,幂等性意味着在隔离环境中来自同一客户端的多个请求不会对资源状态产生任何影响。如果来自另一个客户端的请求更改了资源的状态,则不会破坏幂等性原则。虽然,如果你真的想确保放置请求不会最终覆盖来自不同客户端的另一个同时请求的更改,你应该始终使用 etags。详细来说,put 请求应该始终提供最后一个资源状态的 etag(它从 get 请求中获取),并且只有当 etag 是最新的时才应该更新资源,否则应该引发 412(前提条件失败)状态代码。在 412 的情况下,客户端应该再次获取资源,然后尝试更新。根据 REST,这对于防止竞争条件至关重要。

According to W3C(http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html),

'Methods can also have the property of "idempotence" in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the same as for a single request.'

关于http - PUT 和 POST 之间有什么区别,为什么 PUT 被认为是幂等的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52964467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com