GET,PUT,DELETE,HEAD:Idempotent是什么意思

时间:2013-10-11 03:38:22

标签: http

我正在使用REST API在youtube上收听视频,下面是链接:

REST API

据说GET,PUT,DELETE,HEAD是幂等操作,即您可以多次调用它们并在服务器上获得相同的状态。

有人请详细说明这一行吗?

2 个答案:

答案 0 :(得分:1)

正如它所说的那样

无论使用完全相同的URL请求Resource多少次,服务器上的状态都不会因为请求而改变为副作用。

  

幂等:

     

表示集合中未更改值的元素   单独乘以或以其他方式操作

要点是多个完全相同的请求:

因此,如果您使用相同的网址从服务器请求图像1000次,则服务器上的任何内容都不会更改。

  

如果您在同一资源上多次致电DELETE,他们会说明   在服务器上不会改变。这将删除资源,而不是任何内容   否则,没有副作用。如果资源不存在,那就好了   我们想要什么,而且其他任何东西都不应该受到影响。

那些Verbs不应该有副作用。

执行GET不会导致副作用改变服务器的状态,无论请求这个确切的URL多​​少次。

关于重复的后续呼叫

  

示例:

     

在资源上调用GET不应修改数据库记录,或   导致任何变化。如果是这样,则不遵守规则。

如果连续1000次在资源上调用HEAD,则服务器上的状态不应更改。它可能会返回不同的数据,因为有些数据会单独删除资源,但重复调用应该永远不会在服务器上执行任何不同的操作。

什么是非幂等

示例:

  

多次调用GET会导致跟踪该计数器   每次您使用exact进行请求时要增加的资源   相同的网址。这幂等。有副作用和   由于请求,服务器的状态正在发生变化。

答案 1 :(得分:0)

幂等表示无论您调用该方法多少次(例如GET),都不会引入side effects。例如,当您向URL发出GET请求(在浏览器中导航到http://www.google.com)时,无论有多少GET次请求,您理论上都不会更改Web服务器的状态你发给了服务器。

作为一个真实的示例,您不应允许通过HTTP DELETE访问某些数据库INSERT / GET操作。 Google Crawler在抓取(即GET)网站时意外删除数据库中的实体时发生了多起事故。