HTTP方法的幂等性

原文:http://www.colorfuldays.org/program/http_idempotence/

最近在看RESTful及HTTP协议相关的书和文档,其中都提到一个“幂等”的概念。何为“幂等”? “幂等”是指一个操作重复执行N次得到的结果与执行一次是相等的。在HTTP协议中,要求GET,HEADER,PUT和DELETE方法是幂等的。其中GET,HEADER,DELETE的幂等性很好理解,而PUT方法就有些复杂。PUT方法要求,第一次PUT方法执行之后,其在服务器上生成的资源,不能被后续的PUT方法更改。而POST方法不具备幂等性,因此一个表单重复使用POST提交,在服务器上可能会存在两份记录。

具备“幂等性”的方法是安全的,因此在程序中幂等性也是应该追求的一项性质,很多时候程序不应该假定用户的行为,不能因为用户的重复操作而导致数据出现问题。

时间: 2024-09-20 05:56:37

HTTP方法的幂等性的相关文章

理解HTTP幂等性

原文:http://www.cnblogs.com/weidagang2046/archive/2011/06/04/2063696.html 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式.无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API.为什么Web API如此流行呢?我认为很大程度上应归功于简单有效的HTTP协议.HTTP协议是一种分布式的面向资源的网络应用层协议,无论是服务器端提供Web服务,还是客户端消费Web

restful 笔记01

restful 笔记 如何保持可见性? (a)使用HTTP方法(例如GET,POST,PUT)时,其语义要与HTTP所规定的语义保持一致,并添加适当的标头来描述请求和响应. (b)使用适当的状态码和状态消息,以便代理,缓存和客户端可以判断请求的结果.状态码是一个整数,状态消息是文本   如何保证安全性和幂等性? 实现GET,OPTIONS 和HEAD 方法时,不要引起任何副作用.当客户端重新提交一个GET,HEAD,OPTIONS,PUT或DELETE请求时,确保服务器提供同样的表述形式,并发情

我所理解的RESTful Web API [设计篇]

<我所理解的RESTful Web API [Web标准篇]>Web服务已经成为了异质系统之间的互联与集成的主要手段,在过去一段不短的时间里,Web服务几乎清一水地采用SOAP来构建.构建REST风格的Web服务是最近两三年风行的潮流,所以很多人以为REST是一个事物.而事实却是:REST自其诞生之日起到现在(2014年)已经有14年了,它为什么叫这么一个"奇怪"的名字呢? 目录 一.为什么叫这个"奇怪"的名字?二.采用URI标识资源 二.采用URI标识

HTTP methods 与 RESTful API

  Note GET, primarily used to select resources. Other options for an API method include: POST, primarily used to create child resources. PUT, primarily used to update existing resources (and, although not recommended, can be used to create child reso

Kafka消息序列化和反序列化

Kafka Producer在发送消息时必须配置的参数为:bootstrap.servers.key.serializer.value.serializer.序列化操作是在拦截器(Interceptor)执行之后并且在分配分区(partitions)之前执行的. 首先我们通过一段示例代码来看下普通情况下Kafka Producer如何编写: public class ProducerJavaDemo { public static final String brokerList = "192.1

什么是分布式系统中的幂等性

最近很多人都在谈论幂等性,好吧,这回我也来聊聊这个话题,光看着俩字,一开始的确有点一头雾水,语文不好嘛,词太专业嘛,对吧   现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者restful,既然是通信,那么就有可能再服务器处理完毕后返回结果的时候挂掉,这个时候用户端发现很久没有反应,那么就会多次点击按钮,这样请求有多次,那么处理数据的结果是否要统一呢?那是肯定的!尤其再支付场景.

解决win7系统无法将网页添加到收藏夹的方法

  许多用户在访问网站时,如果看到自己感兴趣的网页内容或网站,通常我们都会通过Ctrl+D添加到收藏夹中,但近期有部分win7系统用户,在浏览器下添加网页收藏时,却发现无法将网页添加到收藏夹,对于这一问题我们如何解决呢?下面看小编为大家提供的详细解决方法吧! 原因分析: 很多时候网址不能收藏都是由于收藏夹目录指向错误引起的,我们可以到注册表里将其修复. 操作方法: 1.在开始菜单中点击"运行",然后输入"regedit"并且回车; 2.打开注册表编辑器,依次展开[H

电脑中通过修改注册表解决网页无法添加到收藏夹的方法

  电脑中通过修改注册表解决网页无法添加到收藏夹的方法.最近有不少用户反映在电脑中出现了无法添加网页到收藏夹的问题,尝试了各种方法都无法解决这个问题.对此,在接下来的内容中,小编为大家提供了一种通过修改注册表解决网页无法添加到收藏夹的方法,大家可以参考一下. 1.按Win+R打开运行,输入regedit并按回车键; 2.在注册表编辑器依次展开HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/UserShell

win7系统将Google浏览器收藏夹拉到桌面成快捷方式的方法

  win7系统将Google浏览器收藏夹拉到桌面成快捷方式的方法 具体方法如下: 1.在进行演示之后,需要在浏览器中进行添加的是收藏的夹的内容,进行点击地址栏中点击收藏夹按钮; 2.可以看到的网页地址被收藏夹收藏起来了; 3.然后点击点击浏览器中的地址中的更多的菜单中,弹出了下拉菜单中进行选择为"书签"; 4.就会弹出了下一级菜单中进行选择为了刚才你收藏的收藏夹的地址; 5.把收藏夹地址进行拖动到自己桌面中当中; 6.可以看到的是百度一下的收藏夹快捷方式创建成功了.下次就可以直接双击