0

我在 youtube 上听了一个关于 REST API 的视频,下面是链接:

REST API

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

有人可以详细说明这条线吗?

4

2 回答 2

1

就是它所说的

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

幂等的:

表示集合中的一个元素,当其自身相乘或以其他方式对其进行运算时,其值不变

关键是多个完全相同的请求:

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

如果您DELETE在同一资源上多次调用,它们在服务器上的状态不会改变。这删除了资源,没有别的,没有副作用。如果资源不存在,这就是我们想要的,服务器上的其他任何东西都不会受到影响。

那些Verbs不应该有副作用。

不管这个确切的GETURL 被请求多少次,都不会导致改变服务器状态的副作用。

这是关于重复的后续调用

例子:

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

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

什么不是幂等的

例子:

GET每次使用完全相同的 URL 发出请求时,多次调用都会导致跟踪该资源的计数器增加。这不是幂等的。有一个副作用,服务器的状态会因为请求而改变。

于 2013-10-11T03:39:54.940 回答
0

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

作为一个真实的例子,您不应该允许通过 HTTP 访问某些数据库DELETE/操作。Google 爬虫在爬取(即ting)网站时意外从数据库中删除实体的事故有很多。INSERTGETGET

于 2013-10-11T03:47:00.490 回答