我正在使用REST API在youtube上收听视频,下面是链接:
据说GET,PUT,DELETE,HEAD是幂等操作,即您可以多次调用它们并在服务器上获得相同的状态。
有人请详细说明这一行吗?
答案 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
)网站时意外删除数据库中的实体时发生了多起事故。