Appearance
幂等性
IMPORTANT
幂等性是一个有点让人困惑的词,尤其从学术定义上看,它有时不太容易理解。
从 RESTful 服务的角度来看,要使操作(或服务调用)具备幂等性,客户端可以重复执行相同的请求,并始终得到相同的结果。换句话说,发出多个相同的请求,其效果与发出一次请求是一样的。需要注意的是,尽管幂等操作产生相同的服务器结果(没有副作用),但响应本身可能不同(例如,资源的状态可能在不同请求之间发生变化)。
PUT 和 DELETE 方法被定义为幂等的。不过,DELETE 方法有一个特殊情况。DELETE 的问题在于,当删除操作成功时,通常会返回 200(OK) 或 204(No Content),但在随后的请求中,如果资源已被删除,可能会返回 404(Not Found),除非服务配置为“标记”资源为删除状态,而不实际删除它。然而,当服务真正删除资源时,下次请求将无法找到该资源并返回 404。尽管如此,每次 DELETE 调用后的服务器状态是相同的,但响应是不同的。
CAUTION
确保 API 实现保持 PUT 和 DELETE HTTP 方法的幂等性。
GET、HEAD、OPTIONS 和 TRACE 方法被定义为安全的,意味着它们仅用于检索数据(因此不会修改数据)。这使得它们也是幂等的,因为多个相同的请求将产生相同的行为。