API 設計 中階
什麼是 API 冪等性(Idempotency)?如何設計冪等 API?
API 冪等性(Idempotency)
定義
多次執行相同操作,結果與執行一次相同。
HTTP 方法的冪等性
| 方法 | 冪等 | 安全(無副作用) |
|---|---|---|
| GET | ✅ | ✅ |
| PUT | ✅ | ❌ |
| DELETE | ✅ | ❌ |
| POST | ❌ | ❌ |
| PATCH | ❌(通常) | ❌ |
為何重要?
- 網路不穩時,客戶端重試可能導致重複操作(如重複扣款)
- 冪等設計讓重試安全
實作方式:Idempotency Key
- 客戶端生成唯一 key(如 UUID)
- 在 Header 帶上:
Idempotency-Key: <uuid> - 伺服器以此 key 為索引,儲存操作結果(Redis / DB)
- 相同 key 的重複請求直接回傳快取結果
儲存策略
- Redis(TTL 24 小時):儲存 key → response 映射
- 需注意原子性:使用 Redis
SET NX(SET if Not eXists)防止競態條件
面試加分:Stripe 的支付 API 就是典型的 Idempotency Key 實作範例,防止網路錯誤造成重複扣款。
✦ AI 模擬面試
輸入你的答案,AI 即時分析精準度與改進空間
登入後即可使用 AI 評分
