POST /payments
سرور عملیات پرداخت را انجام میدهد...
اما قبل از اینکه پاسخ به کاربر برسد، Connection قطع میشود.
Frontend فکر میکند:
❌ «پرداخت انجام نشد.»
پس دوباره Request میفرستد.
حالا Server دو Request دریافت کرده است.
اگر سیستم Idempotency نداشته باشد:
Request #1 → Payment
Request #2 → Payment
ممکن است یک عملیات دوبار اجرا شود.
راهحل:
Idempotency-Key: 8f4c...
اینجا Server این Key را ذخیره میکند.
اگر همان درخواست دوباره رسید:
✅ نتیجه قبلی برگردانده میشود.
❌ عملیات دوباره اجرا نمیشود.
🎯 در سیستمهای حساس، Retry و Idempotency باید کنار هم طراحی شوند.
💡 «دوباره تلاش کردن» بدون اینکه بدانیم عملیات قابل تکرار است یا نه، میتواند خودش منبع Bug باشد.
@CodeVerse_dev