我在 youtube 上听了一个关于 REST API 的视频,下面是链接:
据说 GET、PUT、DELETE、HEAD 是幂等操作,即您可以多次调用它们并在服务器上获得相同的状态。
有人可以详细说明这条线吗?
无论Resource
使用完全相同的 URL 请求多少次,服务器上的状态都不会因为请求而改变。
幂等的:
表示集合中的一个元素,当其自身相乘或以其他方式对其进行运算时,其值不变
因此,如果您使用相同的 URL从服务器请求图像 1000 次,则服务器上的任何内容都不会更改。
如果您
DELETE
在同一资源上多次调用,它们在服务器上的状态不会改变。这删除了资源,没有别的,没有副作用。如果资源不存在,这就是我们想要的,服务器上的其他任何东西都不会受到影响。
那些Verbs
不应该有副作用。
不管这个确切的GET
URL 被请求多少次,都不会导致改变服务器状态的副作用。
例子:
调用
GET
资源不应修改数据库记录,或导致任何更改。如果是这样,那就是不遵守规则。
如果您HEAD
连续调用资源 1000 次,则服务器上的状态不应更改。它可能会返回不同的数据,因为有些人单独删除了资源,但重复调用永远不应该在服务器上做任何不同的事情。
例子:
GET
每次使用完全相同的 URL 发出请求时,多次调用都会导致跟踪该资源的计数器增加。这不是幂等的。有一个副作用,服务器的状态会因为请求而改变。
幂等意味着无论您调用该方法多少次(例如GET
),您都不会引入副作用。例如,当您GET
向 URL 发出请求(http://www.google.com
在浏览器中导航)时,理论上您不会更改 Web 服务器的状态,无论GET
您向服务器发出多少请求。
作为一个真实的例子,您不应该允许通过 HTTP 访问某些数据库DELETE
/操作。Google 爬虫在爬取(即ting)网站时意外从数据库中删除实体的事故有很多。INSERT
GET
GET