Skip to content

幂等性

IMPORTANT

原文:Learn REST API Design

幂等性是一个有点让人困惑的词,尤其从学术定义上看,它有时不太容易理解。

从 RESTful 服务的角度来看,要使操作(或服务调用)具备幂等性,客户端可以重复执行相同的请求,并始终得到相同的结果。换句话说,发出多个相同的请求,其效果与发出一次请求是一样的。需要注意的是,尽管幂等操作产生相同的服务器结果(没有副作用),但响应本身可能不同(例如,资源的状态可能在不同请求之间发生变化)。

PUTDELETE 方法被定义为幂等的。不过,DELETE 方法有一个特殊情况。DELETE 的问题在于,当删除操作成功时,通常会返回 200(OK)204(No Content),但在随后的请求中,如果资源已被删除,可能会返回 404(Not Found),除非服务配置为“标记”资源为删除状态,而不实际删除它。然而,当服务真正删除资源时,下次请求将无法找到该资源并返回 404。尽管如此,每次 DELETE 调用后的服务器状态是相同的,但响应是不同的。

CAUTION

确保 API 实现保持 PUTDELETE HTTP 方法的幂等性。

GETHEADOPTIONSTRACE 方法被定义为安全的,意味着它们仅用于检索数据(因此不会修改数据)。这使得它们也是幂等的,因为多个相同的请求将产生相同的行为。