Docs học tập
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?

On this page