Backend nền tảng
F1 · Idempotency – Gửi nhiều lần, kết quả như một
Client gửi kèm Idempotency-Key (vd: abc123).
F1 · Middle · cốt lõi
Bấm nút thang máy 10 lần thì thang vẫn chỉ đến một lần. Gửi cùng request nhiều lần → kết quả như một lần.
Cốt lõi
- Client gửi kèm Idempotency-Key (vd: abc123).
- Server kiểm tra Key Store (Redis): đã tồn tại → trả kết quả đã lưu; chưa → xử lý & lưu kết quả.
- GET/PUT/DELETE vốn idempotent; POST thì không → cần key.
Đánh đổi
Bắt buộc với thanh toán vì mạng lỗi khiến client retry → chống tính phí trùng.
Trong thực tế
Stripe dùng Idempotency-Key cho các khoản charge.
Bug thường gặp
Người dùng bấm "Thanh toán" hai lần, hoặc app retry khi mạng chập chờn → bị trừ tiền hai lần.
Tự hỏi lại
Hai request cùng key đến đồng thời thì sao? Key giữ bao lâu?