冪等性とリトライ
配送ラベルには実際のコストと物流への影響があります。重複ラベルは運用上の混乱、配送コストの無駄、在庫追跡のエラーを引き起こします。Flex Forward APIには、これを防止する冪等性が組み込まれています。冪等性の仕組み
POST /labels エンドポイントは idempotencyKey フィールドを使用して、各ラベル作成リクエストが一度だけ処理されることを保証します。
最初のリクエスト — APIがラベルを作成し、HTTP 201を返します:
201 Created
idempotencyKey は新しいラベルを作成せずに、HTTP 200で元の結果を返します:
200 OK(冪等リプレイ)
冪等性キーの選択
キーは意図されたラベル作成を一意に識別する必要があります。良いパターン:| パターン | 例 | ユースケース |
|---|---|---|
| 注文ID | ord-20250301-abc123 | 注文ごとに1ラベル |
| 注文+連番 | ord-20250301-abc123-1 | 注文ごとに複数ラベル |
| UUID | f47ac10b-58cc-4372-a567-0e02b2c3d479 | 汎用 |
400バリデーションエラーの後、ラベルが作成されていないため同じ
idempotencyKey を再利用できます。リクエストを修正して同じキーでリトライしてください。リトライ戦略
一時的な障害(HTTP 500、502、またはネットワークタイムアウト)の場合は、指数バックオフでリトライしてください:同じ冪等性キーを再利用
常に元のリクエストと同じ
idempotencyKey でリトライしてください。元のリクエストが成功したがレスポンスが失われた場合でも、重複ラベルが作成されないことが保証されます。エンドポイント別の冪等性
| エンドポイント | 冪等 | メカニズム |
|---|---|---|
POST /labels | はい | idempotencyKey フィールド — すべてのリクエストで必須 |
GET /labels/{id} | はい | 読み取り専用 — 自然に冪等 |
GET /tracking/{id} | はい | 読み取り専用 — 自然に冪等 |
障害シナリオ
レスポンス受信前のネットワークタイムアウト
レスポンス受信前のネットワークタイムアウト
ラベルが作成されたかどうか不明です。同じ
idempotencyKey でリトライしてください。ラベルが作成されていた場合、APIはHTTP 200で元の結果を返します。作成されていない場合、ラベルを作成してHTTP 201を返します。HTTP 500 内部サーバーエラー
HTTP 500 内部サーバーエラー
一時的なサーバーエラーです。同じ
idempotencyKey でバックオフを使用してリトライしてください。HTTP 502 バッドゲートウェイ(配送業者エラー)
HTTP 502 バッドゲートウェイ(配送業者エラー)
配送業者サービスがエラーを返しました。ラベルは
status: failed で保存されています。リトライする前にエラーメッセージを確認してください — 一部の配送業者エラーはリクエストの変更が必要です(無効な住所など)。一時的な配送業者の問題の場合は、同じ idempotencyKey でリトライしてください。HTTP 400 バリデーションエラー
HTTP 400 バリデーションエラー
リクエストが無効です。リクエストを修正せずにリトライしないでください。ラベルが作成されていないため、リクエストボディを修正した後に同じ
idempotencyKey を再利用できます。