عملیات Idempotent با اجرای چندباره ورودی یکسان، از نظر اثر نهایی معادل اجرای یکباره است. این ویژگی در پرداخت، پردازش پیام و Retry اهمیت دارد.
API پرداخت میتواند Idempotency Key بگیرد و نتیجه درخواست نخست را برای درخواست تکراری بازگرداند. دامنه و مدت اعتبار کلید باید مشخص شود.
این مفهوم در یک پروژه واقعی
در API پرداخت، استفاده از Idempotency Key کمک میکند دو درخواست یکسان ناخواسته دو برداشت مالی ایجاد نکنند.
درک تفاوت این موضوع با صف پیام و مسیج بروکر به انتخاب راهکار مناسبتر کمک میکند.
مثال کلید آیدمپوتنسی در پرداخت
POST /api/payments HTTP/1.1
Idempotency-Key: order-42-payment-v1
Content-Type: application/json
{"order_id":42,"amount":350000}
اگر مشتری به دلیل Timeout دوباره درخواست ارسال کرد، سرور باید برای کلید مشابه نتیجه عملیات قبلی را برگرداند، نه اینکه دوباره پول کم کند. این رفتار نیازمند ذخیره نتیجه در سمت سرور است.