HTTP 的幂等性

Wesley13
• 阅读 491

本文主要以HTTP GET、DELETE、PUT、POST四种方法为主进行语义和幂等性的介绍。

一、HTTP 的幂等性

HTTP GET方法用于获取资源,不应有副作用,所以是幂等的。

比如:GET http://www.bank.com/account/123456,不会改变资源的状态,不论调用一次还是N次都没有副作用。请注意,这里强调的是一次和N次具有相同的副作用,而不是每次GET的结果相同。GET http://www.news.com/latest-news这个HTTP请求可能会每次得到不同的结果,但它本身并没有产生任何副作用,因而是满足幂等性的。

HTTP DELETE方法用于删除资源,有副作用,但它应该满足幂等性。

比如:DELETE http://www.forum.com/article/4231,调用一次和N次对系统产生的副作用是相同的,即删掉id为4231的帖子;因此,调用者可以多次调用或刷新页面而不必担心引起错误。

HTTP POST方法用于创建资源,所对应的URI并非创建的资源本身,而是去执行创建动作的操作者,有副作用,不满足幂等性。

比如:POST http://www.forum.com/articles的语义是在http://www.forum.com/articles下创建一篇帖子,HTTP响应中应包含帖子的创建状态以及帖子的URI。两次相同的POST请求会在服务器端创建两份资源,它们具有不同的URI;所以,POST方法不具备幂等性。

HTTP PUT方法用于创建或更新操作,所对应的URI是要创建或更新的资源本身,有副作用,它应该满足幂等性。

比如:PUT http://www.forum/articles/4231的语义是创建或更新ID为4231的帖子。对同一URI进行多次PUT的副作用和一次PUT是相同的;因此,PUT方法具有幂等性。

点赞
收藏
评论区
推荐文章
我是阿沐 我是阿沐
2年前
高并发下如何保证接口的幂等性?
1前言大家好,我是阿沐!”幂等“这个词语或许小伙伴很少见,基本上中小型公司或者一些大公司都未使用过,但是并不代表小伙伴们没有接触到。为啥我会扯到这个技术话题?缘由就是20年我面试了一些大厂包括身边朋友的面试经历,例如腾讯、网易、字节等等大厂,其中大都会遇到”幂等的概念、理解以及实现与应用“,那么下面就听我一一道来幂等的相关知识。2什么是幂等性?数学中:
Stella981 Stella981
2年前
Spring Boot 接口幂等插件使用
幂等概述幂等性原本是数学上的概念,即使公式:f(x)f(f(x))能够成立的数学性质。用在编程领域,则意为对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。幂等性是分布式系统设计中十分重要的概念,具有这一性质的接口在设计时总是秉持这样的一种理念:调用接口发生异常并且重复尝试时,总
Stella981 Stella981
2年前
Kafka设计
1.幂等消息为了解决重试导致的消息重复、乱序问题,kafka引入了幂等消息。幂等消息保证producer在一次会话内写入一个partition内的消息具有幂等性,可以通过重试来确保消息发布的ExactlyOnce语义。实现逻辑很简单:区分producer会话producer每次启动后,首先向broker申请一
Stella981 Stella981
2年前
ASP.NET WebApi服务接口如何防止重复请求实现HTTP幂等性
一、背景描述与课程介绍明人不说暗话,跟着阿笨一起玩WebApi。在我们平时开发项目中可能会出现下面这些情况;1)、由于用户误操作,多次点击网页表单提交按钮。由于网速等原因造成页面卡顿,用户重复刷新提交页面。黑客或恶意用户使用postman等工具重复恶意提交表单(攻击网站)。这些情况都会导致表单重复提交,造成数据重复
Stella981 Stella981
2年前
Kafka Exactly
!(https://oscimg.oschina.net/oscnet/0001a9db0c7346a6b32db4586329cae6.png)作者|王蒙整理|无风我起浪这篇文章主要讲述Kafka事务性的实现,这部分的实现要比幂等性的实现复杂一些,幂等性实现是事务性实现的基础,幂等性提供了单会话单Partiti
Wesley13 Wesley13
2年前
BC开方(乙)
functionbcroot($幂,$指'3',$scale0){开方$dfalse;if($幂'0'){return'0';}elseif($幂'1'){return'1';}$指数
Stella981 Stella981
2年前
Redis如何保证接口的幂等性?
在最近的一次业务升级中,遇到这样一个问题,我们设计了新的账户体系,需要在用户将应用升级之后将原来账户的数据手动的同步过来,就是需要用户自己去触发同步按钮进行同步,因为有些数据是用户存在自己本地的。那么在这个过程中就存在一个问题,要是因为网络的问题,用户重复点击了这个按钮怎么办?就算我们在客户端做了一些处理,在同步的过程中,不能再次点击,但是经过我最近
Wesley13 Wesley13
2年前
MQ实现消息的幂等性
一、什么是幂等性可以参考数据库乐观锁机制,比如执行一条更新库存的SQL语句,在并发场景,为了性能和数据可靠性,会在更新时加上查询时的版本,并且更新这个版本信息。可能你要对一个事情进行操作,这个操作可能会执行成百上千次,但是操作结果都是相同的,这就是幂等性。!(https://img2018.cnblogs.com/blog/1841773/201
Stella981 Stella981
2年前
SpringBoot接口幂等性实现的4种方案!
!(https://oscimg.oschina.net/oscnet/42a233a0deb143899955ec0d6d7805c6.jpg)作者|超级小豆丁来源|www.mydlq.club/article/94目录什么是幂等性什么是接口幂等性为什么需要实现幂等性
Easter79 Easter79
2年前
SpringBoot接口幂等性实现的4种方案!
!(https://oscimg.oschina.net/oscnet/42a233a0deb143899955ec0d6d7805c6.jpg)作者|超级小豆丁来源|www.mydlq.club/article/94目录什么是幂等性什么是接口幂等性为什么需要实现幂等性