http://mpvideo.qpic.cn/0bf2yyatiaabfiao7iolsnpvdrwdgtdacnaa.f10002.mp4?
幂等性和安全性是HTTP方法的属性。在HTTP RFC定义了这些特性,并告诉我们哪些HTTP方法是安全的和幂。服务器应用程序应确保正确执行安全和幂等的语义,如客户端期望的那样。...幂等的HTTP方法 幂等意味着多个相同的请求将具有相同的结果。因此,发送请求一次还是多次都没有关系。以下HTTP方法是幂等的:GET,HEAD,OPTIONS,TRACE,PUT和DELETE。...所有安全的HTTP方法都是幂等的,但PUT和DELETE是幂等的,但并不安全。 请注意,幂等性并不意味着服务器必须对每个请求以相同的方式进行响应。...例如,假设我们要通过ID使用DELETE请求删除项目: 幂等性和安全性是HTTP方法的属性。在HTTP RFC定义了这些特性,并告诉我们哪些HTTP方法是安全的和幂。...所有安全的HTTP方法都是幂等的,但PUT和DELETE是幂等的,但并不安全。 请注意,幂等性并不意味着服务器必须对每个请求以相同的方式进行响应。
但即使相关的一些数据被修改了,这也不是API消费者所请求的事。 什么样的HTTP方法是幂等的? 如果一个方法执行多次和执行一次的结果(带来的副作用)是一样的话,那么这个方法就被认为是幂等的。...HTTP方法的安全和幂等表: ?...DELETE 也是不安全的,因为它会删除资源,也就是修改了资源的表述。但是 DELETE 却是幂等的,因为对某个资源执行一次删除和执行多次删除的效果是一样的。...它会修改资源表述,所以不是安全的。但是为什么它和 PUT 不一样,PATCH 不是幂等的呢?因为 PUT 其实是整体替换,替换多次和一次的效果是一样的,而 PATCH 是针对局部进行修改。...HTTP 方法的安全性和幂等性是 HTTP标准文档中的一部分(https://tools.ietf.org/html/rfc7231,https://tools.ietf.org/html/rfc5789
HTTP方法的幂等性与安全性 RESTFul风格的接口设计本质上使用的是HTTP协议方法,因此,RESTFul接口方法的幂等性指的就是HTTP方法的幂等性。...常用的HTTP方法有:OPTIONS(获取服务器信息),HEAD(请求资源首部信息),GET(获取资源),POST(创建资源),PUT(更新资源全部信息),PATCH(更新资源部分信息),DELETE(...如下是常用HTTP方法的幂等性和安全性总结: HTTP方法名称 是否幂等 是否安全 OPTIONS Y Y HEAD Y Y GET Y Y PUT Y N DELETE Y N POST N N PATCH...N N 从上述表格中可以看出,HTTP方法的幂等性和安全性并不是同一个概念,如下是对个各个方法的幂等性和安全性解释: OPTIONS方法常常用于获取服务器信息,不会对资源产生影响,也不会对资源进行修改...从上述HTTP方法的幂等性总结中可以得知,HTTP协议的POST和PATCH方法都不是幂等性的(但是我们却经常会在RESTFul接口中使用到它们),那是否就意味中无法将POST和PATCH方法设计为幂等性接口了呢
RESTful PUT和DELETE方法需要遵守幂等原则 虽然并不是一个严格的规则,但PUT和DELETE方法大致映射了保存和删除的概念。...如果设计人员想要从服务器中删除资源,他们应该使用HTTP DELETE方法。如果需要创建新资源或需要更新现有资源,则应使用PUT方法。 PUT和DELETE方法对于保存和删除数据来说是相对简单的。...但这也是RESTful Java API设计人员经常遇到麻烦的另一个陷阱。这就引出了第二条规则:HTTP方法要具备幂等性。 如果某件事是幂等的,意味着它可以重复进行,但结果总是一样的。...目前为止,我们建立了两个非常重要的规则: GET调用不能更改资源的状态。 PUT和DELETE方法必须是幂等的。 但是请注意,我们还没有提到POST方法。...仅仅因为没有违反关于幂等性的规则或滥用GET、PUT和DELETE方法,并不意味着已经正确地设计了RESTful API。过度使用POST方法本身也是RESTful设计的误区之一。
提到HTTP请求方法,想必大家都很熟悉GET和POST了,其实HTTP的请求方法还有很多:PUT,DELETE,CONNECT,OPTIONS,PATCH,HEAD。...下面我们将通过一些例子对这些方法的用法进行简单介绍: ? 这样是不是很容易理解了,细心你会发现:PUT和PATCH都是可以用来修改的,它们没有其他不同的地方吗?...比如说:GET方法多次去服务器请求数据,不会对服务器数据有影响,这就是幂等的,POST方法多次提交数据,每提交一次,服务器会接收一条新数据并且去处理,这就不是幂等的; 了解了安全和幂等,我们会更容易理解其他...HTTP方法的作用和用法: GET 通过GET的方法获取数据,Preview中的内容是获取的数据: GET方法是安全且幂等的。...编辑“预约时间”后保存提交: PUT 与 POST 方法等区别在于,PUT方法是幂等的方法。 ? DELETE DELETE方法用于删除指定的资源。
上述四个HTTP请求方法的安全性和幂等性如下: HTTP Method 安全性 幂等性 解释 GET 安全 幂等 读操作安全,查询一次多次结果一致 POST 非安全 非幂等 写操作非安全,每多插入一次都会出现新结果...PUT 非安全 幂等 写操作非安全,一次和多次更新结果一致 DELETE 非安全 幂等 写操作非安全,一次和多次删除结果一致 三、传统模式 URI 和 RESTful 风格对比 查询 操作 传统 RESTful...3xx 状态码 API 用不到301状态码(永久重定向)和302状态码(暂时重定向,307也是这个含义),因为它们可以由应用级别返回,浏览器会直接跳转,API 级别可以不考虑这两种情况。...它与302和307的含义一样,也是"暂时重定向",区别在于302和307用于GET请求,而303用于POST、PUT和DELETE请求。...所以,服务器回应的 HTTP 头的Content-Type属性要设为application/json。
至于其它4中HTTP方法(POST、PUT、PATCH和DELETE),它们旨在针对目标资源作添加、修改和删除操作。对于DELETE,它的语义很明确,就是删除一个已经存在的资源。...安全性与幂等性 关于HTTP请求采用的这些个方法,具有两个基本的特性,即“安全性”和“幂等性”。...至于其它4个HTTP方法,由于它们会导致服务端资源的变化,所以被认为是不安全的方法。 幂等性(Idempotent)是一个数学上的概念,在这里表示发送一次和多次请求引起的边界效应是一致的。...上述3种安全的HTTP方法(GET、HEAD和OPTIONS)均是幂等方法。由于DELETE和PATCH请求操作的是现有的某个资源,所以它们是幂等方法。...由于PUT是一个幂等方法,所以携带相同资源的PUT请求不应该引起资源的状态变化,如果我们在资源上附加一个自增长的计数器表示被修改的次数,这实际上就破坏了幂等型。
我们平时用的最多的就是 GET 和 POST(例如写爬虫的时候,基本都是这两种),常用的还有 PUT、PATCH、DELETE 。...幂等性:PUT 是幂等的,而 POST 是非幂等的。关于幂等性,见下文。 2.4 PATCH 和 PUT 的区别 PATCH 是 2010 后成为的正式 http 方法,它是对 PUT 的补充。...现在有了 PATCH 就解决了这种判断,在 PUT 操作中不管属性是不是 null,都进行更新,在 PATCH 接口中就对非 null 的进行更新。另外,PATCH 是非幂等的。...补充:幂等性 幂等(Idempotence)本来是一个数学上的概念,定义就不说了,看了头晕。...后来拓展到计算机领域,描述为: 一个操作、方法或者服务,其任意多次执行所产生的影响均与一次执行的影响相同。 一个幂等的方法,使用同样的参数,对它进行多次调用和一次调用,对系统产生的影响是一样的。
来源:http://t.cn/RVtwbmU 怎么理解幂等性 HTTP GET方法 HTTP POST方法 HTTP PUT方法 HTTP PATCH方法 HTTP DELETE方法 如何设计符合幂等性的高质量...我们来看下 PUT /tickets/12 # 更新ticket 12 因为它直接把实体部分的数据替换到服务器的资源,我们多次调用它,只会产生一次影响,但是有相同结果的 HTTP 方法,所以满足幂等性...HTTP PATCH方法 HTTP PATCH方法是非幂等的。HTTP POST方法和HTTP PUT方法可能比较好理解,但是HTTP PATCH方法只是更新部分资源,怎么是非幂等的呢?...DELETE /tickets/12 # 删除ticekt 12 调用一次和多次对资源产生影响是相同的,所以也满足幂等性。...HTTP PUT方法 vs HTTP PATCH方法 此时,你看会有另外一个问题。HTTP PUT方法和HTTP PATCH方法,都是用来表述更新资源,它们之间有什么区别呢?
我们来看下 PUT /tickets/12 # 更新ticket 12 因为它直接把实体部分的数据替换到服务器的资源,我们多次调用它,只会产生一次影响,但是有相同结果的 HTTP 方法,所以满足幂等性...HTTP PATCH方法 HTTP PATCH方法是非幂等的。HTTP POST方法和HTTP PUT方法可能比较好理解,但是HTTP PATCH方法只是更新部分资源,怎么是非幂等的呢?...DELETE /tickets/12 # 删除ticekt 12 调用一次和多次对资源产生影响是相同的,所以也满足幂等性。...但是,实际上,两个方法都用于创建资源,更为本质的差别是在幂等性。HTTP POST方法是非幂等,所以用来表示创建资源,HTTP PUT方法是幂等的,因此表示更新资源更加贴切。...HTTP PUT方法 vs HTTP PATCH方法 此时,你看会有另外一个问题。HTTP PUT方法和HTTP PATCH方法,都是用来表述更新资源,它们之间有什么区别呢?
一,restful接口概述 在资源中中一切都被认为是资源,每个资源有对应的Url标识。处理资源使用Get,Post,Put,Delete等http方法操作实现创建,读取,修改,删除等操作。...如果试图获取一个不存在的资源,服务器会返回错误的响应码404(当客户端想要删除一个资源时,可以发送一个DELETE请求。未找到)。 DELETE请求有一个重要的属性:它是幂等的。...所谓幂等,就是发送多次请求对资源状态的影响和发送一次请求的影响是一样的。...幂等性是一个很有用的特性,因为互联网不是一个可靠的网络,假设我们发送了一个DELETE请求,然后连接超时了,我们没有收到响应信息,所以我们无法知道资源是否被正确地删除了,但是我们可以利用DELETE请求的幂等性特性...一个OPTIONS请求的返回结果包含这个资源所支持的所有HTTP方法,如GET/PUT/DELETE/POST等。
这是一个独立于应用程序的属性,可以设计到我们的系统中。 仅仅因为可以操纵资源,并不意味着每个人都有能力这样做。...关于GET请求的一个关键点是,它不应该修改服务器端上的任何内容。这基本上是一个安全的要求。GET请求也是具有幂等性的。这意味着多次发出请求不会产生任何后果。...这是基于网络的分布式基础设施中的一个关键属性。如果客户端在发出GET请求时被中断,那么由于动词的幂等性,它应该被授权再次发出请求。 在设计良好的基础设施中,客户机向哪个应用程序请求什么并不重要。...这种区别允许PUT请求具有幂等性,而POST更新不是。...如果客户端发出一个带有If- match头的补丁请求,这个部分更新就有可能成为幂等性的。可以重试中断的请求,因为如果第一次成功,if – match头将与新状态不同。
风格这个词是非常关键的,因为它告诉我们,REST 不是协议,也不是什么硬性的规范,仅仅就是一种架构风格而已。...是一组架构约束条件和设计指导原则,一种基于HTTP、URI、XML 等现有协议与标准的开发方式。 为何叫REST?...PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。 PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。 DELETE(DELETE):从服务器删除资源。...400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。...在URL中加入版本号,例如”vl/animals” URL中的路径(endpoint)不能有动词,只能用名词。 用HTTP方法对资源进行增删改查的操作。 用HTTP状态码传达执行结果和失败原因。
这是一个独立于应用程序的属性,可以设计到我们的系统中。 仅仅因为可以操纵资源,并不意味着每个人都有能力这样做。...关于GET请求的一个关键点是,它不应该修改服务器端上的任何内容。这基本上是一个安全的要求。GET请求也是具有幂等性的。这意味着多次发出请求不会产生任何后果。...这是基于网络的分布式基础设施中的一个关键属性。如果客户端在发出GET请求时被中断,那么由于动词的幂等性,它应该被授权再次发出请求。 在设计良好的基础设施中,客户机向哪个应用程序请求什么并不重要。...这种区别允许PUT请求具有幂等性,而POST更新不是。...如果客户端发出一个带有If- match头的补丁请求,这个部分更新就有可能成为幂等性的。可以重试中断的请求,因为如果第一次成功,if - match头将与新状态不同。
HTTP PUT方法 HTTP PUT方法是不是幂等的呢?...HTTP PATCH方法 HTTP PATCH方法是非幂等的。HTTP POST方法和HTTP PUT方法可能比较好理解,但是HTTP PATCH方法只是更新部分资源,怎么是非幂等的呢?...【DELETE】 /users/1001 # 删除用户信息 调用一次和多次对资源产生影响是相同的,所以也满足幂等性。...但是,实际上,两个方法都用于创建资源,更为本质的差别是在幂等性。HTTP POST方法是非幂等,所以用来表示创建资源,HTTP PUT方法是幂等的,因此表示更新资源更加贴切。...HTTP PUT方法 vs HTTP PATCH方法 此时,你看会有另外一个问题。HTTP PUT方法和HTTP PATCH方法,都是用来表述更新资源,它们之间有什么区别呢?
HTTP POST 方法 HTTP POST 方法是一个非幂等方法,因为调用多次,都将产生新的资源。...HTTP POST 方法和 HTTP PUT 方法可能比较好理解,但是 HTTP PATCH 方法只是更新部分资源,怎么是非幂等的呢?...DELETE /tickets/12 # 删除ticekt 12 调用一次和多次对资源产生影响是相同的,所以也满足幂等性。...但是,实际上,两个方法都用于创建资源,更为本质的差别是在幂等性。HTTP POST 方法是非幂等,所以用来表示创建资源,HTTP PUT 方法是幂等的,因此表示更新资源更加贴切。...HTTP PUT vs HTTP PATCH 此时,你看会有另外一个问题。HTTP PUT 方法和 HTTP PATCH 方法,都是用来表述更新资源,它们之间有什么区别呢?
,则HTTP 方法是幂等的。...幂等请求分类 我们知道,HTTP 请求一共有 GET、POST、PATCH、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT这些,那哪些是幂等,哪些是不幂等的呢。...POST 接下来我们来分析下 POST 请求,这个是幂等的吗? 不是。...因为 DELETE 请求是用作删除服务器资源的,发起一次 DELETE 请求,资源就被删除了,在发起多次,结果也是一样的,因为资源已经被删除了。 所以 DELETE 请求是幂等请求。...总结 好了,这里就总结了幂等和非幂等请求的一些定义和分析。
因为按照RESTful架构可以充分的利用HTTP协议带给我们的各种功能,算是对HTTP协议使用的最佳实践,还有一点就是可以使软件架构设计更加清晰,可维护性更好,但是并不是所有情况都需要完全遵守REST原则...幂等性:幂等性(Idempotence)本身是一个数学概念,在HTTP/1.1规范中幂等性的定义是: Methods can also have the property of “idempotence...翻译过来大意就是如果方法调用一次和多次产生额外的效果是相同的,它就具有幂等性。...,所以POST不具有幂等性;但是PUT方法却是幂等的,因为每次调用产生的效果都是对资源进行更新。...对于安全方法,它仍然可能改变服务器上的内容或资源,但这必须不导致不同的表现形式。 有关HTTP常用方法幂等性和安全性如下: ? RESTful API设计规则: 1.
领取专属 10元无门槛券
手把手带您无忧上云