Idempotency Key cho POST
POST · /api/practice/level4/payments · Nâng cao
Mô tả bài tập
Mô phỏng API tạo giao dịch thanh toán. Khi mạng chập chờn, client hay gọi lại (retry) cùng một request POST - nếu không cẩn thận sẽ tạo ra 2 giao dịch trùng nhau. Gửi kèm header Idempotency-Key (một chuỗi ngẫu nhiên do client sinh ra); nếu gọi lại với cùng key đó, server trả về đúng kết quả giao dịch lần đầu, không tạo bản ghi mới.
Mục tiêu học được
- Hiểu tại sao các API thanh toán thực tế luôn cần idempotency key
- Test bằng cách gọi 2 lần với cùng Idempotency-Key, kiểm tra chỉ có 1 giao dịch được tạo
- Test gọi 2 lần với Idempotency-Key khác nhau, kiểm tra tạo ra 2 giao dịch riêng biệt
Lệnh curl
curl -i -X POST "http://testing-api.systemhub.uk/api/practice/level4/payments" \
-H "X-Practice-Token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: demo-key-001" \
-d '{"amount": 100000, "currency": "VND"}'
Các bước làm trên Postman
- Tạo request POST tới http://testing-api.systemhub.uk/api/practice/level4/payments với header Idempotency-Key: demo-key-001
- Gửi 2 lần liên tiếp với header giống hệt nhau, kiểm tra 2 response trả về CÙNG một id giao dịch
- Đổi Idempotency-Key thành demo-key-002, gửi lại, kiểm tra tạo ra id giao dịch MỚI
Đăng nhập để lệnh curl ở trên tự động điền sẵn Practice Token thật của bạn.
🧪 Thử nghiệm trực tiếp
Gọi API ngay tại đây. Nếu bạn đã đăng nhập, tiến độ sẽ được ghi nhận tự động khi gọi đúng như kỳ vọng của bài.
Kết quả
Status: