网络使得结果充满不确定性

即使浏览器从未收到响应,请求仍可能到达服务器并成功提交。重试是合理的,但如果没有稳定的请求标识符,服务器就无法区分重试请求和新请求。

在创建公共链接时,这种歧义可能会导致别名重复、记录混乱或副作用重复出现。

一个键代表一个预期的突变

客户端在创建请求中发送一个唯一的幂等键。服务器将结果与输入的指纹一同存储。重复使用相同的键和输入时,将返回原始结果。

使用相同的键但输入内容不同会被视为冲突而拒绝。这既能保护客户端,也能保护服务器,避免意外更改先前命令的含义。

在生产中,耐用性至关重要

对于隔离测试而言,内存中的幂等存储就足够了,但对于多实例的生产环境服务则不然。生产环境中的键和结果必须与变异操作位于同一持久化域边界内,并具备过期机制和租户范围。

同样的模式也适用于支付、Webhook 处理、数据导入以及任务等场景——在这些场景中,重复操作会造成高昂的成本。

开发者 API · 当前访问权限和限制