首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PUT和POST的区别

PUT 请求 PUT 请求是 HTTP 协议中的一种请求方法,通常用于更新或替换服务器上的资源。使用 PUT 请求时,客户端需要将整个资源的新版本发送到服务器。...如果服务器上不存在该资源,则会创建一个新的资源。 PUT 请求具有幂等性,即执行多次 PUT 请求的结果应该相同。...使用 POST 请求时,客户端将数据提交到服务器,服务器根据数据进行处理,并返回响应。通常情况下,POST 请求会在服务器上创建新的资源,并返回该资源的 URI。...客户端发送的数据不同:PUT 请求需要客户端发送完整的资源内容,而 POST 请求可以只发送部分资源内容。...幂等性不同:PUT 请求具有幂等性,即执行多次 PUT 请求的结果应该相同,而 POST 请求不具有幂等性。

2.1K10

理解幂等性

,在支付请求发出之后,在服务端发生了扣钱操作,接口响应超时了,调用方重试了一次 一个订单状态更新接口,调用方连续发送了两个消息,一个是已创建,一个是已付款。...但是你先接收到已付款,然后又接收到了已创建 在支付完成订单之后,需要发送一条短信,当一台机器接收到短信发送的消息之后,处理较慢。...如果不存在则把全局ID,存储到存储系统中,比如数据库、redis等。如果存在则表示该方法已经执行。...两次相同的POST请求会在服务器端创建两份资源,它们具有不同的URI;所以,POST方法不具备幂等性。...比如:PUT http://www.forum/articles/4231的语义是创建或更新ID为4231的帖子。对同一URI进行多次PUT的副作用和一次PUT是相同的;因此,PUT方法具有幂等性。

56220
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    解读Raft(二 选举和日志复制)

    最近工作中讨论到了Raft协议相关的一些问题,正好之前读过多次Raft协议的那paper,所以趁着讨论做一次总结整理。...Leader周期性的发送心跳(如果有正常的RPC的请求情况下可以不发心跳)包保持自己Leader的角色(避免集群中其他节点认为没有Leader而开始选举)。...一个节点在一个任期内只能给一个Candidate投票,任期相同则选票先到先得)并给其他节点发送心跳来保持自己的角色 收到其他节点的RPC请求,如果请求中的任期大于等于Candidate当前的任期,认为其他节点成为了...日志组织形式如上图,每个日志条目中包含可执行的指令、和日志被创建时的任期号,日志条目也包含了自己在日志中的位置,即index。一旦一个日志条目存在于大多数节点,那么该日志条目是committed的。...Raft算法保证了以下特性: 如果两个日志条目有相同的index和term,那么他们存储了相同的指令(即index和term相同,那么可定是同一条指令,就是同一个日志条目) 如果不同的日志中有两个日志条目

    87930

    SQL Server索引简介:SQL Server索引进阶 Level 1

    对数据库开发人员的透彻理解对于数据库开发人员来说非常重要,其中一个原因来自于所有其他原因:当SQL Server从客户端到达的请求时,SQL Server只有两种可能的方式来访问所请求的行: 它可以扫描包含数据的表中的每一行...书签与电话号码相同,允许SQL Server直接导航到与该索引条目对应的表中的行。 此外,SQL Server非聚簇索引条目具有一些仅内部使用的头信息,并且可能包含一些可选信息。...创建索引时,SQL Server会在基础表中的每一行的索引中生成并维护一个条目(当覆盖过滤后的索引时,将会遇到此通用规则的一个例外)。...AdventureWorks2008数据库具有不同的表结构,下面的查询将失败。 我们每次都会运行相同的查询; 但在我们在表上创建一个索引之前,第一个执行将会发生,第二个执行将在我们创建一个索引之后。...该输出通知我们,我们的请求只需要4个逻辑IO; 并且需要非常少量的处理器时间来检索“Helen Meyer”行。 结论 创建精心挑选的索引可以大大提高数据库性能。

    1.5K40

    GuavaCache 简单入门

    尤其是当计算或者检索的代价很高,而需要多次在输入上检索这个值得时候,应该使用缓存。 Cache和ConcurrentHashMap是非常相似的,但是并不完全相同。...Guava caching适用于以下情况: 愿意花费一部分内存来提高速度 期待有些关键字会被多次查询 缓存并不需要存储比RAM中更多的数据。...Size-based 逐出 如果你的缓存不应该超出一定的大小,请使用CacheBuilder.maximum(long),缓存将尝试驱逐最近或者最不常使用的条目,需要注意的是,缓存可能会在达到内存限制之前逐出条目...除了与maximumSize要求相同的警告之外,注意权重是在条目创建时计算的,在此后是静态的。...此外,某些环境会限制线程的创建,这会使得CacheBuilder在该环境中无法使用。

    1.7K20

    02 RESTFul接口和HTTP的幂等性分析

    :1在公告板,新闻组,邮件列表或类似的文章组中发布消息2通过注册新增用户,3向数据处理程序提供一批数据,例如提交一个表单 PUT 使用请求中的负载创建或者替换目标资源。...幂等的含义可以理解为调用一次与连续调用多次是等价的(没有副作用或副作用不变) POST和PUT的区别 POST和PUT的区别容易被简单地误认为“POST表示创建资源,PUT表示更新资源” 而实际上,二者均可用于创建资源...请注意,这里强调的是一次和N次并不是说每次请求的结果相同,而是每次请求不会产生不同的副作用。...,比如POST:/news的含义是在news新闻组这个资源分类下新建一条新的新闻,所以两次相同的POST请求会在服务器端创建两份新的资源,它们是不同的。...所以,POST方法不具备幂等性 PUT 具备幂等性 PUT对应的资源是要创建或更新的资源本身,语义是创建或更新,对同一资源进行多次PUT的副作用和一次PUT是相同的,因此,PUT方法具有幂等性

    22710

    HTTP 基本知识

    还有更多的标准header,甚至更多的自定义header,您可以根据您的应用程序进行开发。重要的是要知道header在创建一个干净的应用程序和减少在请求URL或请求正文中发送的数据量非常有用。...这是一个简单的阅读,它不会添加,更改或删除它。 ② POST&PUT POST和PUT都是将数据发送到服务器的方式。但是,其含义是不同的。POST请求期望服务器将其添加到现有的。...例如,具有用户对象的POST请求意味着服务器创建一个新账户。另一方面,PUT请求期望服务器更新或替换现有的数据项。因此,如果有人更新自己的配置文件,则具有用户对象的PUT请求将是适合的。...总体而言,您可能会认识到GET,POST,PUT,DELETE与许多数据库的CRUD模型非常相似。GET等于读取,POST正在创建一新的数据项,PUT正在编辑,DELETE是删除。...c、3xx Redirect(重定向) 3xx组中的状态码都表示指定的URL不是正在或永久地服务于服务器,会在其他地方指示您的请求。这主要用于Web服务器,那些传递网页和较少的API。

    80540

    与我一起学习微服务架构设计模式3—微服务架构中的进程间通信

    通过在请求消息中包含回复通道和消息标识符来实现异步请求/响应。接收方处理消息将回复发送到指定的回复通道,回复消息包含与消息标志符具有相同值的相关性ID,用以匹配验证。...并将它们视为相同的逻辑接收方,如kafka中的消费者组。消息代理将每个分片分配给单个接收器。 处理重复消息 正常情况下,保证传递的消息代理只会传递一次消息。但故障可能导致消息被多次传递。...两种方法处理重复消息: 编写幂等消息处理器: 幂等指这个应用被相同输入参数多次重复调用时,也不会产生额外的效果,但要保证消息代理在重新传递消息时保持相同顺序。...将消息从数据库移动到消息代理的两种方法: 通过轮询模式发布事件 轮询数据库中的发件箱,将消息发送给消息代理,它在小规模下运行良好,但经常轮询数据库可能会导致数据库性能下降 使用事务日志拖尾模式发布事件...应用提交到数据库的更新对应着数据库事务日志中的一个条目。

    1.8K10

    HTTP有哪些保证幂等性和安全性的方法

    幂等的HTTP方法 幂等意味着多个相同的请求将具有相同的结果。因此,发送请求一次还是多次都没有关系。以下HTTP方法是幂等的:GET,HEAD,OPTIONS,TRACE,PUT和DELETE。...所有安全的HTTP方法都是幂等的,但PUT和DELETE是幂等的,但并不安全。 请注意,幂等性并不意味着服务器必须对每个请求以相同的方式进行响应。...幂等的HTTP方法 幂等意味着多个相同的请求将具有相同的结果。因此,发送请求一次还是多次都没有关系。以下HTTP方法是幂等的:GET,HEAD,OPTIONS,TRACE,PUT和DELETE。...所有安全的HTTP方法都是幂等的,但PUT和DELETE是幂等的,但并不安全。 请注意,幂等性并不意味着服务器必须对每个请求以相同的方式进行响应。...幂等性是API的一项积极功能,因为它可以使API更具容错性。假设客户端出现问题,并且请求被多次发送。只要使用幂等操作,就不会在服务器端造成任何问题。

    82020

    RAFT算法详解

    Leader把请求作为日志条目(Log entries)加入到它的日志中,然后并行的向其他服务器发起 AppendEntries RPC复制日志条目。...2、日志的组成 日志由有序编号(log index)的日志条目组成。每个日志条目包含它被创建时的任期号(term)和用于状态机执行的命令。...3、日志的一致性 (1)日志复制的两条保证 如果不同日志中的两个条目有着相同的索引和任期号,则它们所存储的命令是相同的(原因:leader 最多在一个任期里的一个日志索引位置创建一条日志条目...如果不同日志中的两个条目有着相同的索引和任期号,则它们之前的所有条目都是完全一样的(原因:每次 RPC 发送附加日志时,leader 会把这条日志条目的前面的日志的下标和任期号一起发送给 follower...2、解决方案之一阶段成员变更 Raft解决方法是每次成员变更只允许增加或删除一个成员(如果要变更多个成员,连续变更多次)。

    6.4K31

    【前端 · 面试 】HTTP 总结(三)—— HTTP 请求方法

    POST 请求的其他特性: POST 请求不会被缓存 POST 请求不会保留在浏览器历史记录中 POST 不能被收藏为书签 POST 请求对数据长度没有要求 PUT 方法 PUT 方法用于将数据发送到服务器来创建...PUT 与 POST 方法的区别在于,PUT 方法是幂等的:调用一次与连续调用多次是等价的(即没有副作用),而连续调用多次 POST 方法可能会有副作用,比如将一个订单重复提交多次。...PUT 方法可能的响应 如果目标资源不存在,并且PUT方法成功创建了一份,那么源头服务器必须返回 201(Created) 来通知客户端资源已创建。...这样客户端就可以查看 HTTP 请求报文在发送的途中,是否被修改过了。 PATCH 方法 在HTTP协议中,请求方法 PATCH 用于对资源进行部分修改。...不同于 PUT 方法,而与 POST 方法类似,PATCH 方法是非幂等的,这就意味着连续多个的相同请求会产生不同的效果。

    57410

    Etcd Raft算法机制

    Leader把请求作为日志条目(Log entries)加入到它的日志中,然后并行的向其他服务器发起 AppendEntries RPC复制日志条目。...2、日志的组成 日志由有序编号(log index)的日志条目组成。每个日志条目包含它被创建时的任期号(term)和用于状态机执行的命令。...在这里插入图片描述 (1)日志复制的两条保证 如果不同日志中的两个条目有着相同的索引和任期号,则它们所存储的命令是相同的(原因:leader 最多在一个任期里的一个日志索引位置创建一条日志条目,日志条目在日志的位置从来不会改变...如果不同日志中的两个条目有着相同的索引和任期号,则它们之前的所有条目都是完全一样的(原因:每次 RPC 发送附加日志时,leader 会把这条日志条目的前面的日志的下标和任期号一起发送给 follower...在这里插入图片描述 2、解决方案之一阶段成员变更 Raft解决方法是每次成员变更只允许增加或删除一个成员(如果要变更多个成员,连续变更多次)。 ?

    1.5K21

    Raft协议实现etcd

    etcd 会定期对数据做快照,快照时会在WAL中追加一条记录。在etcd节点重启恢复时,会查找wal中最后一次快照的记录,将快照后的日志条目重新给到raft模块恢复内存数据。...KV数据库存储 Etcd最终生效的数据存在KV数据库中,并对后端存储抽象了一个Backend接口,Backend的实现需要支持事务和多版本管理。...请求处理 当客户端提交一条数据变更请求时,比如put hello 为 world的写请求,v3版本中会调用EtcdServer的Put()方法,最终都会调用到processInternalRaftRequestOnce...上面的maybeAppend() 方法只会将日志存储到RaftLog维护的内存队列中,日志的持久化是异步进行的,这个和Leader节点的存储WAL逻辑基本相同。...有一点区别就是follower节点正式发送MsgAppResp消息会在wal保存成功后,而leader节点是先发送消息,后保存的wal。

    1.3K54

    etcd 详解

    etcd 会定期对数据做快照,快照时会在WAL中追加一条记录。在etcd节点重启恢复时,会查找wal中最后一次快照的记录,将快照后的日志条目重新给到raft模块恢复内存数据。...KV数据库存储 Etcd最终生效的数据存在KV数据库中,并对后端存储抽象了一个Backend接口,Backend的实现需要支持事务和多版本管理。...请求处理 当客户端提交一条数据变更请求时,比如put hello 为 world的写请求,v3版本中会调用EtcdServer的Put()方法,最终都会调用到processInternalRaftRequestOnce...上面的maybeAppend() 方法只会将日志存储到RaftLog维护的内存队列中,日志的持久化是异步进行的,这个和Leader节点的存储WAL逻辑基本相同。...有一点区别就是follower节点正式发送MsgAppResp消息会在wal保存成功后,而leader节点是先发送消息,后保存的wal。

    2K00

    深入剖析共识性算法 Raft

    每个日志条目包含它被创建时的 Term 号(下图中方框中的数字),和一个复制状态机需要执行的指令。如果一个日志条目被复制到半数以上的服务器上,就被认为可以提交(Commit)了。...这个特性基于这条原则:Leader 最多在一个 Term 内、在指定的一个日志索引上创建一条日志条目,同时日志条目在日志中的位置也从来不会改变。...如果 Follower 在它的日志中找不到包含相同日志索引和 Term 号的日志条目,它就会拒绝接收新的日志条目。 4.2 日志复制流程 Leader 负责处理所有客户端的请求。...Leader 把请求作为日志条目加入到它的日志中,然后并行的向其他服务器发送 AppendEntries RPC 请求,要求 Follower 复制日志条目。...另外,和其他的算法相比,Raft 中的新领导人只需要发送更少日志条目(其他算法中必须在他们被提交之前发送更多的冗余日志条目来为他们重新编号)。

    1.2K20

    花5分钟看这篇之前,你才发现你不懂RESTful

    : 访问资源的路径,就是各种web 框架中定义的route路由 query: 查询字符串,为发送给服务器的参数,在这里更多发送数据分页、排序等参数。...而幂等性的意思是操作一次和操作多次的最终效果相同,客户端重复调用也只返回同一个结果。...预备 在本案例的实战中,我们访问的RESTful接口都是对数据库真实的操作,新建数据库,创建一个数据库和表(根据自己喜好)。...POST请求用来新增一个资源 : POST请求向服务器发送数据,但是该请求会改变数据的内容(新添),就像数据库的insert操作一样,会创建新的内容。...PUT请求用来更新资源,PUT请求是向服务器端发送数据的, 与POST请求不同的是,PUT请求侧重于数据的修改 ,就像数据库中update一样,而POST请求侧重于数据的增加。

    1.3K41

    HashMap你真的了解吗?

    在 put(K key, V value) 的情况下,如果条目存在,则函数将其替换为新值,否则它会在单链表的头部创建一个新条目(根据参数中的键和值)。...因此,数组的大小调整创建了两倍的桶(即链表)并将 所有现有条目重新分配到桶中(旧的和新创建的)。...此调整大小操作的目的是减小链表的大小,以便 put()、remove() 和 get() 方法的时间成本保持较低。调整大小后,其键具有相同哈希的所有条目将保留在同一个桶中。...由于您修改后的密钥与旧哈希值(存储在条目中)的哈希值不同,因此映射不会在链表中找到该条目。 这是Java中的一个具体示例。...这意味着即使您分配了一个 HashMap,在第一次使用 put() 方法之前,不会在内存中分配内部条目数组(花费 4 * CAPACITY 字节)。

    2.2K30

    SpringBoot入门建站全系列(二)Controller种类及映射处理详解

    2.7 Http不同方法的区别 幂等: 如果一个方法重复执行多次,产生的效果是一样的,那就是幂等的。幂等的意思是如果相同的操作再执行第二遍第三遍,结果还是一样。...而GET、HEAD、PUT和DELETE请求都是幂等的,无论对资源操作多少次, 结果总是一样的,后面的请求并不会产生比第一次更多的影响。...POST: POST方法不是幂等的,多次执行,将导致多条相同的条目被创建。 PUT: PUT方法一般会用来更新一个已知资源,幂等。...3.6 PathVariable 请求路径中的某一部分。...运用在方法上,会在每一个@RequestMapping标注的方法前执行,如果有返回值,则自动将该返回值加入到ModelMap中。 反正没用过。

    92120

    RFC2616-HTTP1.1-Methods(方法规定部分—译文)

    比如,一个序列中的值会在稍后被修改,并且该序列的结果会依赖于此,那么该序列就是非幂等的。   根据定义,一个不产生副作用的序列是幂等的(假如没有在同一资源上执行并发操作)。...在HEAD请求所返回的响应中所包含的头部源信息应该跟GET请求所返回的响应中的信息相同。该方法可用于在不转移实体本身的情况下获得请求所隐含的有关于实体的源信息。...POST请求必须遵守第8.2节中规定的有关消息传输要求。   有关安全性相关的问题请查阅15.1.3节 9.6 PUT   PUT方法请求一个被请求URI封闭的指定实体。...HTTP/1.1没有定义PUT方法如何影响源服务器的状态。   PUT请求必须遵守第8.2节中规定的消息传输要求。   ...PUT方法除非被特定的实体头(entity-header)所指定,否则PUT请求中的实体头( entity-headers)应该应用于PUT方法创建或修改的资源。

    57220
    领券