如果一个方法不会改变服务器状态,那么它就是安全的:例如 GET、HEAD 和 OPTIONS 请求。如果多次发出相同的请求与发出一次相同的请求效果相同,那么该方法就是幂等的:例如 GET、HEAD、OPTIONS、PUT 和 DELETE 请求。所有安全的方法都是幂等的;反之则不然,因为 DELETE 请求会改变服务器状态,但它仍然是幂等的。
正是这些特性使得自动重试成为可能。代理、浏览器或 HTTP 库可以在超时后自动重试幂等请求,而无需事先询问,因为重复请求不会使情况变得更糟。POST 和 PATCH 请求既不安全也不幂等,因此不会自动重试——这也是为什么需要 Idempotency-Key 请求头的原因,它赋予了 POST 请求本身所缺乏的幂等特性。
幂等性意味着"returns the same response" 。它指的是对服务器产生相同的*效果*。即使第一次 DELETE 操作返回 204,第二次返回 404,但对同一资源的第二次 DELETE 操作仍然是幂等的:最终状态——资源被删除——是相同的。
`GET /starfleet/v1/tribbles`是一种刻意设计的反模式:每次读取该 GET 请求时,请求数量都会翻倍。它最清晰地展示了"safe"机制究竟要保护你免受什么侵害。
所有术语 · 测试技巧 · 全部 39 个模拟 REST API
最后更新时间