用途:让 API 操作具备幂等性,即同一请求执行多次与执行一次结果相同,从而安全处理客户端重试、避免重复扣款或重复下单。适用于支付处理(扣款、退款)、订单创建与履约、任何有副作用的操作、可能被客户端重试的 API 以及 Webhook 处理器。
主要能力:提供 IdempotencyStore(基于 Redis),用 SET NX 加锁并缓存响应;提供 Express 中间件与 FastAPI 中间件,按 Idempotency-Key 请求头拦截 POST/PUT/PATCH;提供 Python 装饰器模式;提供客户端 IdempotentClient,自动生成 UUID 键并在收到 409 时等待重试。
使用方式:客户端在请求头携带 Idempotency-Key;服务端以“方法:路径:幂等键”组合成完整键,先查存储:已完成则返回缓存响应并加 X-Idempotent-Replayed 头,处理中则返回 409,不存在则加锁处理,完成后缓存响应。锁 TTL 默认 60000 毫秒,响应 TTL 默认 86400000 毫秒。
限制与注意:仅缓存 2xx 与 4xx 响应,5xx 会释放锁以允许重试;键应包含请求路径避免不同端点冲突;客户端应使用 UUID 而非顺序 ID;需校验幂等键格式、按幂等键限流、避免在 409 中暴露内部状态,并考虑按用户命名空间隔离。资料未提供具体安装命令、依赖版本与收费信息。