Tìm hiểu về tính idempotent qua các ví dụ thực tế
Trong các ứng dụng thực tế, yêu cầu API trùng lặp xuất hiện thường xuyên hơn nhiều so với dự đoán của không ít lập trình viên. Người dùng có thể nhấp đúp vào nút, ứng dụng di động có thể tự động thử lại yêu cầu, mạng có thể gặp sự cố rồi gửi lại lệnh gọi, và các tác vụ chạy nền có thể thử lại những thao tác bị lỗi.
Nếu API không được thiết kế phù hợp, các yêu cầu trùng lặp này có thể gây ra những vấn đề nghiêm trọng như thanh toán hai lần, tạo bản ghi trùng lặp, trạng thái không nhất quán và dữ liệu bị hỏng.
Đây là lúc khái niệm idempotency trở nên đặc biệt quan trọng.
Mục lục
Idempotency là gì?
Idempotency có nghĩa là:
Dù bạn gửi cùng một yêu cầu bao nhiêu lần, kết quả vẫn giống như khi bạn chỉ gửi yêu cầu đó một lần.
Nói đơn giản:
- 1 yêu cầu = tạo ra 1 kết quả
- 10 yêu cầu giống nhau = vẫn chỉ tạo ra 1 kết quả
Ví dụ trong đời sống
Hãy hình dung bạn rút tiền tại một máy ATM:
- Bạn yêu cầu: “Rút 100 đô la”.
- Ngay cả khi yêu cầu vô tình được gửi hai lần, bạn chỉ nên nhận 100 đô la một lần, không phải 200 đô la.
Đó chính là tính idempotent.
Tại sao các yêu cầu API trùng lặp lại là vấn đề?
Trong phần tiếp theo, bài viết đi sâu hơn vào nguyên nhân gây ra các yêu cầu API trùng lặp và cách xử lý chúng trong .NET.



