در دنیای برنامهنویسی وب و HTTP، header ها نقش بسیار مهمی ایفا میکنند و هر یک کارکرد خاصی دارند. یکی از header های جالب توجه و البته کاربردی، "Retry-After" است که معمولاً در پاسخهای HTTP که شامل کدهای 503 (Service Unavailable) یا 429 (Too Many Requests) هستند، دیده میشود. اما این header دقیقاً چه کاری انجام میدهد؟
به زبان ساده، وقتی یک سرور نمیتواند به درخواستها پاسخ دهد، معمولاً از header "Retry-After" برای اعلام زمانی استفاده میکند که بعد از آن کلاینت میتواند دوباره درخواست خود را ارسال کند. این موضوع هم به نظم سرور و هم به کاهش بار غیرضروری کمک میکند.
در header "Retry-After" میتوان هم از تاریخ و زمان خاصی استفاده کرد و هم از یک زمانبندی مشخص به ثانیه. این موضوع به مدیران سرور انعطاف میدهد تا نظم بیشتری در مدیریت درخواستها داشته باشند.
در بسیاری از سناریوها، استفاده از "Retry-After" تنها جنبهی اختیاری دارد و کلاینت میتواند در صورت عدم وجود این header، خودش تعیین کند که چه زمانی دوباره درخواست را ارسال کند. اما در صورتی که این header وجود داشته باشد، کلاینتها میتوانند از آن به عنوان یک راهنمای دقیق استفاده کنند.
بیایید به یک مثال کد برای بهبود درک موضوع نگاه کنیم:
HTTP/1.1 503 Service Unavailable
Retry-After: 120
در این مثال، سرور اعلام کرده که خدمات موقتاً در دسترس نیست و کلاینت میتواند پس از 120 ثانیه دوباره تلاش کند.
حالا بیایید به توضیح خط به خط این کد بپردازیم:
HTTP/1.1 503 Service Unavailable
این خط به معنای این است که درخواست با خطای 503 روبرو شده و خدمات موقتاً در دسترس نیست.
Retry-After: 120
این خط میگوید که کلاینت باید 120 ثانیه صبر کند و سپس درخواست خود را دوباره ارسال کند.