当前位置: 首页 > 知识库问答 >
问题:

PUT POST是幂等的(REST)

印曜灿
2023-03-14

我想提出我的问题的一种方式是:如果我使用put来进行一个非幂等调用,然后使用POST来这样做,会有什么问题呢?

共有1个答案

吴飞语
2023-03-14

您正确地指出,HTTP协议中没有任何固有的东西强制使用putdelete等方法/动词的幂等属性。HTTP是一种无状态协议,不保留用户发出的每个请求的信息或状态;每个请求都被视为独立的。

引用Wikipedia关于HTTP方法的幂等属性(强调我的):

请注意,方法是否是幂等的并不是由协议或web服务器强制执行的。完全可以编写一个web应用程序,其中(例如)数据库插入或其他非幂等操作由GET或其他请求触发。然而,如果用户代理认为重复相同的请求是安全的,而不是安全的,那么忽略该建议可能会导致不希望的后果。

更新:正如朱利安所指出的,RFC2616已被RFC7231取代。下面是相应的部分。

因此,当您将web服务作为put方法发布时,我提交了如下所示的请求:

PUT /users/<new_id> HTTP/1.1
Host: example.com

我将期望创建一个新的用户资源。同样,如果我的请求看起来像:

PUT /users/<existing_id> HTTP/1.1
Host: example.com
POST /users/<existing_id> HTTP/1.1
Host: example.com
POST /users/<new_id> HTTP/1.1
Host: example.com
 类似资料:
  • 我读过很多地方说HTTP补丁是非幂等的。有人能解释一下为什么它是非幂等的吗?因为根据定义,幂等方法可以改变资源状态,也可以不改变资源状态,但是重复的请求在第一个请求之后应该不会有进一步的副作用。重复的补丁请求如何改变资源状态?

  • HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用。(注意是副作用) GET http://www.bank.com/account/123456,不会改变资源的状态,不论调用一次还是N次都没有副作用。请注意,这里强调的是一次和N次具有相同的副作用,而不是每次GET的结果相同。GET http://www.news.com/latest-news这个HTTP请求可能会每次得到不同

  • 本文向大家介绍Kafka中的幂等是怎么实现的相关面试题,主要包含被问及Kafka中的幂等是怎么实现的时的应答技巧和注意事项,需要的朋友参考一下 pid+序号实现,单个producer内幂等? 扩展问题: Kafka中有那些地方需要选举?这些地方的选举策略又有哪些? 失效副本是指什么?有那些应对措施? 多副本下,各个副本中的HW和LEO的演变过程 为什么Kafka不支持读写分离? Kafka在可靠性

  • 本文向大家介绍什么是幂等性?它是如何使用的?相关面试题,主要包含被问及什么是幂等性?它是如何使用的?时的应答技巧和注意事项,需要的朋友参考一下 幂等性指的是这样一种场景:您重复执行一项任务,但最终结果保持不变或类似。 幂等性主要用作数据源或远程服务,当它接收一组以上指令时,它只处理一组指令。  

  • 问题内容: 我试着通过网络搜索,但是徒劳。有没有一种方法可以使用hibernate来执行幂等更新。 一种用例是使用HTTP PUT通过REST API更新数据库中的特定字段。因此,例如,如果我有一个包含列: _ Id,Name,Phone,UpdateDate*_ 的数据库 _ ,_ 并且我多次用相同的值更新(特定 ID的 ) Phone ( 电话) 字段,那么只有我的第一个操作必须更新 Phon

  • Kafka文件说,幂等生产者是可能的,与相同的生产者会话,我无法理解这一点。 比方说,Kafka为每条消息添加序列号,最后一个序列号在Kafka中维护(不确定它维护在哪里)。 它是如何生成序列号的,它保存在哪里? 为什么当制作人崩溃并再次出现时,它不能保持序列? 我怎样才能使它在制作人会话之间真正幂等?