HTTP方法的幂等性
HTTP 方法的幂等性
HTTP 定义了服务器的交互方法 包括OPTIONS、HEAD、GET、POST、DELETE、PUT、TRACE、CONNECT
POST 与PUT 的区别
创建一条记录使用POST
更新一条记录使用PUT (也可以被用来创建资源,不常用)
POST 成功 返回200(成功),204(没有内容) 201(Created,在资源被服务器创建的时候)
PUT 成功返回 200
幂等性(Idempotence)。在HTTP/1.1规范中幂等性的定义是:
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方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用。
GET HEAD PUT DELETE 有幂等性,TRACE、OPTIONS 不具有副作用,有内在的幂等性
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和PUT。POST和PUT的区别容易被简单地误认为“POST表示创建资源,PUT表示更新资源”;而实际上,二者均可用于创建资源,更为本质的差别是在幂等性方面。在HTTP规范中对POST和PUT是这样定义的:
POST所对应的URI并非创建的资源本身,而是资源的接收者。比如:POST http://www.forum.com/articles的语义是在http://www.forum.com/articles下创建一篇帖子,HTTP响应中应包含帖子的创建状态以及帖子的URI。两次相同的POST请求会在服务器端创建两份资源,它们具有不同的URI;所以,POST方法不具备幂等性。而PUT所对应的URI是要创建或更新的资源本身。比如:PUT http://www.forum/articles/4231的语义是创建或更新ID为4231的帖子。对同一URI进行多次PUT的副作用和一次PUT是相同的;因此,PUT方法具有幂等性。
如何保证接口的幂等性: 加token ,laravel 采用了此方法。
参照 https://www.cnblogs.com/weidagang2046/archive/2011/06/04/idempotence.html
HTTP方法的幂等性相关推荐
- http的安全方法和幂等性
最近在研究http,看到http的安全方法和幂等性部分,不太明白,尤其是"post方法是非幂等的"不理解,进过查资料,找到以下两篇有价值的文章,特转过来! 理解HTTP幂等性 转自 ...
- http 安全性和幂等性_HTTP方法:幂等性和安全性
http 安全性和幂等性 幂等性和安全性是HTTP方法的属性. HTTP RFC定义了这些属性,并告诉我们哪些HTTP方法是安全且幂等的. 服务器应用程序应确保正确执行安全和幂等的语义,如客户端期望的 ...
- HTTP方法:幂等性和安全性
幂等性和安全性是HTTP方法的属性. HTTP RFC定义了这些属性,并告诉我们哪些HTTP方法是安全且幂等的. 服务器应用程序应确保正确执行安全和幂等的语义,如客户端期望的那样. 安全的HTTP方法 ...
- 幂等性问题和解决方法
在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求.这就需要考虑到一个幂等性问题. 幂等性 幂等性的概念是:任意多次执行所产生的影响均与一次执行的影响相同,即无论你请求了多少次,对数据库的影响 ...
- 深入理解Java幂等性
深入理解Java幂等性 1. 概念理解 幂等:是一个数学概念,表示N次变换和1次变换的结果相同. 幂等操作:其特点是任意多次执行所产生的影响均与一次执行的影响相同(不会改变资源状态,对数据没有副作用) ...
- RabbitMQ消息幂等性问题
文章目录 1. 什么是幂等性? 1.1 消息队列的幂等性 1.2 模拟重试机制 1.2.1 生产者代码 1.2.2 消费者代码 1.2.3 消费者 application.yml 配置 2. 如何保证 ...
- rabbit和mysql事务_分布式事务原理及SpringBoot整合RabbitMQ实现可靠事件,TCC事务模型及接口幂等性...
分布式事务 我们知道在单数据库系统中,实现数据的一致性,通过数据库的事务来处理比较简单.在微服务或分布式系统中,各个独立的服务都会有自己的数据库,而不是在同一个数据库中,所以当一组事务(如商品交易中, ...
- window.location.href如何多次请求_测试同学必会系列之如何进行幂等性的测试
很多同学都应该听过幂等这个概念,但如果在面试中真的被问起来什么是幂等,你有信心去解释清楚么? 首先看看幂等的定义. 一个HTTP方法是幂等的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服 ...
- http的幂等性及幂等性
幂等性方法定义: 9.1.2 Idempotent Methods Methods can also have the property of "idempotence" in t ...
- 编程中的幂等性 —— HTTP幂等性
幂等(idempotent.idempotence)是一个数学与计算机学概念,常见于抽象代数中. 在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同.幂等函数,或幂等方法, ...
最新文章
- 敏捷冲刺每日报告四(Java-Team)
- html表单注册功能的实现,仅一个form表单 js实现注册信息依次填写提交功能
- LXC linux容器简介——在操作系统层次上为进程提供的虚拟的执行环境,限制其使用的CPU和mem等资源,底层是linux内核资源管理的cgroups子系统...
- 使用malloc初始化一个类和new初始化一个类的区别
- 谈谈谷歌word2vec的原理
- postgresql 删除触发器_PostgreSQL:我没有带闪,不讲武德
- awk -f 分隔符 命令_千面 awk
- 【php内核与扩展开发系列】PHP生命周期---启动、终止与模式
- Spring XSD validation cache issue
- gcc编译c文件的简单操作
- 使用C#发送Http 请求实现模拟登陆(以博客园为例)
- 【转载+思考】追问泄题之源:命题权寻租打开方便之门
- 电阻电导传输线的归一化转移矩阵[a](必背)
- JasperReport和iReport的java集成大全
- 平面四边形八节点等参单元的平面有限元分析程序
- 图书管理系统2.0——mysql数据库
- 在linux系统如何获得窗口句柄,编写控制台程序,获得标准输入输出的窗口句柄...
- 泰坦尼克 数据集_Kaggle-泰坦尼克-学习心得(高分容易,理解很难)——第1篇...
- 面试题:如果办公室一台电脑无法上网,你的排查方法?
- 一台服务器接多台显示器,一台主机为两台显示器分屏工作的方法