API 幂等防重设计(免费版)
输入
| 字段 | 必填 | 说明 |
|---|---|---|
| 业务前缀 biz_prefix | 是 | 如 order/refund/pay |
| 请求体 request_body | 是 | 参与幂等键摘要的规范化报文 |
| namespace | 否 | 租户/用户/渠道隔离 |
| stored 记录 | 是 | 服务端该键状态:无/PROCESSING/COMPLETED |
| same_payload | 是 | 本次体与首次是否一致 |
输出
幂等键 + 处置动作(首次执行/进行中409/重复回放200/冲突422) + 是否执行副作用
工作流
- 客户端下单前生成幂等键(业务前缀+命名空间+请求体摘要)并随 header 发送。
- 服务端首次见到键:落 PROCESSING 并执行业务。
- 同键并发重试且仍 PROCESSING:返回409,不重复执行。
- 已 COMPLETED 的重试:直接回放首次结果,不再扣款/下单。
- 同键但请求体不同:返回422冲突,拒绝键复用。
硬性规则
- 同一(键,请求体)的副作用全局只执行一次。
- 进行中与已完成的重复请求都不得再次产生副作用。
- 同键不同体必须判冲突,不能静默覆盖。
- 键要含命名空间做租户隔离,防跨用户碰撞。
示例
首次下单 stored=None → EXECUTE_FIRST(200,执行)
网络重试 stored=COMPLETED 同体 → REPLAY_CACHED(200,不重复扣款)
并发重试 stored=PROCESSING → IN_FLIGHT(409)