سلام! تو این مطلب میخوام در مورد یک کد وضعیت خیلی جالب HTTP براتون صحبت کنم: وضعیت 300 یا "Multiple Choices". این وضعیت توی پروتکل HTTP برای مواقعی استفاده میشه که به کلاینت اطلاع میده که درخواستش چندین گزینه مختلف برای پاسخ دادن داره.
به عنوان مثال، ممکنه یک URL مربوط به یک منبعی باشه که با فرمتهای مختلف در دسترسه، مثلا هم به صورت JSON و هم XML. اینجا سرور میتونه یک وضعیت 300 برگردونه و به کاربر امکان انتخاب رو بده.
وضعیت 300 معمولا با هدرهای HTTP همراه هست که توی اونها گزینههای مختلف رو معرفی میکنن، مثلا با استفاده از هدر "Location". کلاینت بعد از دریافت این پاسخ میتونه یکی از گزینههای پیشنهادی رو انتخاب کنه و درخواستش رو به اون URL اصلاح کنه.
فقط اینو در نظر داشته باش که در اکثر مواقع، مرورگرها خودشون به طور خودکار هدایت نمیشن و کاربر یا برنامهنویس باید تصمیم بگیره کدوم مسیر رو انتخاب کنه. بنابراین، در کنار نشون دادن وضعیت 300 معمولا نیازه که اطلاعات بیشتری برای هدایت کاربر فراهم بشه.
حالا بیایید نگاهی به یه نمونه کوچیک از پاسخ 300 بندازیم که مشخص میکنه این فرآیند به چه شکل انجام میشود:
HTTP/1.1 300 Multiple Choices
Location: /index.json
Location: /index.xml
Content-Type: text/html
<html>
<head>
<title>300 Multiple Choices</title>
</head>
<body>
<h1>300 Multiple Choices</h1>
<p>The resource you requested has several representations. Choose one:</p>
<ul>
<li><a href="/index.json">JSON format</a></li>
<li><a href="/index.xml">XML format</a></li>
</ul>
</body>
</html>
توضیحات کد:
HTTP/1.1 300 Multiple Choices
این خط نشان میدهد که سرور با وضعیت 300 به درخواست پاسخ داده است.
Location: /index.json
این هدر یکی از گزینههای موجود (در این مثال، نسخه JSON منبع) را نشان میدهد.
Location: /index.xml
این هدر گزینه دیگر (نسخه XML منبع) را نشان میدهد.
Content-Type: text/html
مشخص میکند که بدنه پاسخ به صورت HTML ارسال شده است.
بقیه کد HTML هم صفحهای رو به کاربر نشون میده که در اون لیستی از لینکها برای انتخاب گزینه صحیح وجود داره. با این کار، کاربر یا برنامهنویس میتونه تصمیم بگیره کدوم نمای از منبع رو بخواد استفاده کنه.