RestFul WebApi 中幂等的概念是什么?

Par*_*ami 2 .net asp.net web

任何人都可以解释什么是 RestFul WebApi 中的幂等以及何时使用它?

Win*_*Win 6

GETPUTDELETE方法被认为是幂等; 也就是说,一遍又一遍地调用它们将产生相同的结果,而不会产生任何额外的副作用。例如,调用者应该能够在特定资源上调用 DELETE 操作而不会收到任何错误并且不会损害系统。如果资源已经被删除,调用者不应收到错误。这同样适用于 PUT 操作。对于给定的唯一资源(由元素 URI 标识),如果资源已经存在,提交 PUT 请求应该更新资源。或者,如果它不存在,系统应该创建提交的资源。换句话说,一遍又一遍地调用 PUT 会产生相同的结果,而没有任何额外的副作用(即,根据调用者提供的表示,新任务将存在于系统中,无论系统是否必须创建新任务或更新现有任务)一)。

GET操作也说是安全的。安全意味着系统中没有任何变化,这适用于旨在查询系统资源集合或特定资源的 HTTP 调用。重要的是服务的GETPUTDELETE操作的幂等性与 HTTP 协议标准保持一致。因此,应尽一切努力确保这三个动作可以反复调用而不会出错。

不同于其他三个动作,POST不被认为是幂等。这是因为 POST 用于为该方法的每次调用创建已识别资源类型的新实例。一遍又一遍地调用 PUT 永远不会导致创建或更新多个资源,而调用 POST 将导致新的资源实例——每次调用一个。这适用于系统必须生成新资源标识符并在响应中返回的情况。

来源:ASP.NET Web API 2:从头到尾构建 REST 服务