RestFul WebApi中Idempotent的概念是什么?

时间:2016-03-02 17:43:36

标签: asp.net .net web

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

1 个答案:

答案 0 :(得分:4)

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

GET 操作也被认为是安全的。安全意味着系统中的任何内容都不会发生任何变化,这适用于旨在向系统查询资源集合或特定资源的HTTP调用。重要的是,服务的 GET PUT DELETE 操作的幂等性仍然与HTTP协议标准保持一致。因此,应尽一切努力确保可以调用这三个行动 过了没有错误。

与其他三项操作不同, POST 不被视为幂等 。这是因为POST用于为方法的每次调用创建标识的资源类型的新实例。在反复调用PUT永远不会导致创建或更新多个资源的情况下,调用POST将导致新的资源实例 - 每个调用一个。这适用于系统必须生成新资源标识符并在响应中返回的情况。

来源: ASP.NET Web API 2: Building a REST Service from Start to Finish