幂等性与重试
配送标签涉及实际的成本和物流影响。重复标签会导致运营混乱、配送费用浪费以及库存追踪错误。Flex Forward API 内建幂等性来防止此问题。幂等性的工作方式
POST /labels 端点使用 idempotencyKey 字段来确保每个标签创建请求只会被处理一次。
第一次请求 — API 创建标签并返回 HTTP 201:
201 Created
idempotencyKey 会返回原始结果(HTTP 200),而不会创建新标签:
200 OK(幂等重放)
选择幂等性密钥
密钥应该唯一标识预期的标签创建。良好的模式:| 模式 | 示例 | 使用场景 |
|---|---|---|
| 订单 ID | ord-20250301-abc123 | 每个订单一个标签 |
| 订单 + 序号 | ord-20250301-abc123-1 | 每个订单多个标签 |
| UUID | f47ac10b-58cc-4372-a567-0e02b2c3d479 | 通用 |
400 验证错误后,由于未创建标签,可以重复使用相同的
idempotencyKey。修正请求后使用相同密钥重试。重试策略
对于暂时性失败(HTTP 500、502 或网络超时),请使用指数退避重试:各端点的幂等性
| 端点 | 幂等 | 机制 |
|---|---|---|
POST /labels | 是 | idempotencyKey 字段 — 每个请求中必填 |
GET /labels/{id} | 是 | 只读 — 天然幂等 |
GET /tracking/{id} | 是 | 只读 — 天然幂等 |
失败场景
收到响应前的网络超时
收到响应前的网络超时
标签可能已创建也可能未创建。使用相同的
idempotencyKey 重试。如果标签已创建,API 会返回 HTTP 200 和原始结果。如果未创建,API 会创建标签并返回 HTTP 201。HTTP 500 内部服务器错误
HTTP 500 内部服务器错误
暂时性服务器错误。使用相同的
idempotencyKey 并以退避策略重试。HTTP 502 错误网关(物流商错误)
HTTP 502 错误网关(物流商错误)
物流商服务返回错误。标签以
status: failed 保存。重试前请检查错误消息 — 部分物流商错误需要修改请求(如无效地址)。对于暂时性的物流商问题,使用相同的 idempotencyKey 重试。HTTP 400 验证错误
HTTP 400 验证错误
请求无效。未修正请求前请勿重试。由于未创建标签,修正请求体后可以重复使用相同的
idempotencyKey。