HTTP स्टेटस कोड समझें
HTTP स्टेटस कोड वह तीन अंकों की संख्या है जो सर्वर हर रिस्पॉन्स के साथ भेजता है ताकि बताए कि रिक्वेस्ट का क्या हुआ। पहला अंक क्लास बताता है — सफलता, रीडायरेक्ट, क्लाइंट एरर, सर्वर एरर — और पूरा कोड खास वजह। इन्हें सही पढ़ना API समस्या डायग्नोज़ करने का सबसे तेज़ तरीका है, और इन्हें सही चुनना अच्छी तरह डिज़ाइन किए API की सबसे साफ़ निशानियों में से एक।
यह गाइड पाँच क्लास, रोज़ मिलने वाले कोड, मिलते-जुलते कोड (401 बनाम 403, 301 बनाम 302, 502 बनाम 504) का फ़र्क़, और हर स्थिति में आपके अपने API को कौन-सा कोड लौटाना चाहिए, यह समझाती है।
पाँच क्लास
- 1xx Informational — रिक्वेस्ट मिल गई और प्रोसेसिंग जारी है (100 Continue, 101 Switching Protocols)। एप्लिकेशन कोड में शायद ही दिखते हैं।
- 2xx Success — रिक्वेस्ट समझी और स्वीकार की गई।
- 3xx Redirection — क्लाइंट को कुछ और करना होगा, आमतौर पर नए URL पर जाना।
- 4xx Client error — रिक्वेस्ट गलत है: ख़राब सिंटैक्स, ऑथ गायब, ऐसा कोई रिसोर्स नहीं। क्लाइंट को बिना बदले दोबारा नहीं भेजना चाहिए।
- 5xx Server error — रिक्वेस्ट वैध थी लेकिन सर्वर फ़ेल हुआ। क्लाइंट दोबारा कोशिश कर सकता है, बेहतर हो बैकऑफ़ के साथ।
2xx: सफलता कोड
- 200 OK — स्टैंडर्ड सफलता; बॉडी में नतीजा है।
- 201 Created — रिसोर्स बना (POST या PUT के बाद); Location हेडर उसकी ओर इशारा करता है।
- 202 Accepted — रिक्वेस्ट असिंक्रोनस प्रोसेसिंग के लिए कतार में है; अभी पूरी नहीं हुई।
- 204 No Content — बिना बॉडी सफलता (DELETE और कुछ PUT/PATCH में आम)।
- 206 Partial Content — बाइट रेंज लौटाई गई, रिज़्यूमेबल डाउनलोड और वीडियो में इस्तेमाल।
3xx: रीडायरेक्ट
- 301 Moved Permanently — URL स्थायी रूप से बदल गया; ब्राउज़र और सर्च इंजन अपने रिकॉर्ड अपडेट करते हैं। कैनोनिकल URL बदलाव के लिए।
- 302 Found — अस्थायी रीडायरेक्ट; मूल URL ही कैनोनिकल रहता है। मेथड GET में बदल सकता है।
- 303 See Other — POST के बाद इस दूसरे URL पर GET करो (post/redirect/get पैटर्न)।
- 304 Not Modified — कैश की कॉपी अब भी वैध है; कोई बॉडी नहीं भेजी जाती। कैशिंग काम करने की निशानी।
- 307 / 308 — अस्थायी और स्थायी रीडायरेक्ट जो मेथड और बॉडी बनाए रखने की गारंटी देते हैं। API के लिए 301 की जगह 308 चुनें।
4xx: क्लाइंट एरर
- 400 Bad Request — बिगड़ा सिंटैक्स या अवैध पैरामीटर; सामान्य वैलिडेशन एरर।
- 401 Unauthorized — कोई वैध क्रेडेंशियल नहीं। नाम के बावजूद इसका मतलब "ऑथेंटिकेटेड नहीं"। WWW-Authenticate हेडर भेजें।
- 403 Forbidden — ऑथेंटिकेटेड, लेकिन यह करने की अनुमति नहीं। उन्हीं क्रेडेंशियल से दोबारा कोशिश बेकार है।
- 404 Not Found — इस URL पर कोई रिसोर्स नहीं (या सर्वर बताना नहीं चाहता कि वह मौजूद है)।
- 405 Method Not Allowed — URL मौजूद है लेकिन इस मेथड के लिए नहीं (जैसे read-only रिसोर्स पर DELETE)। Allow हेडर शामिल करें।
- 409 Conflict — रिक्वेस्ट मौजूदा स्टेट से टकराती है: डुप्लिकेट यूनिक key, पुराना वर्ज़न, पहले ही प्रोसेस हो चुका।
- 410 Gone — कभी था, जानबूझकर हटाया गया, वापस नहीं आएगा।
- 415 Unsupported Media Type — रिक्वेस्ट बॉडी पर गलत Content-Type।
- 422 Unprocessable Entity — सिंटैक्स ठीक है लेकिन वैल्यू वैलिडेशन में फ़ेल। फ़ील्ड-लेवल एरर के लिए व्यापक इस्तेमाल।
- 429 Too Many Requests — रेट लिमिट पार; Retry-After हेडर बताता है कब दोबारा कोशिश करें।
आज़माएँ: API स्टेटस कोड सिम्युलेटर आज़माएँ: HTTP स्टेटस एनालाइज़र
5xx: सर्वर एरर
- 500 Internal Server Error — अनहैंडल्ड एक्सेप्शन। ख़राब इनपुट का कभी सही जवाब नहीं; इसका मतलब है वैलिडेशन गायब है।
- 501 Not Implemented — सर्वर उस मेथड को बिल्कुल सपोर्ट नहीं करता।
- 502 Bad Gateway — प्रॉक्सी या लोड बैलेंसर को अपस्ट्रीम सर्वर से अवैध रिस्पॉन्स मिला (वह क्रैश हुआ, या कचरा भेजा)।
- 503 Service Unavailable — सर्वर ओवरलोडेड है या मेंटेनेंस में; अस्थायी। Retry-After भेजें।
- 504 Gateway Timeout — प्रॉक्सी ने अपस्ट्रीम का इंतज़ार किया और उसने समय पर जवाब नहीं दिया।
जिन कोड में लोग उलझते हैं
- 401 बनाम 403 — 401: आप कौन हैं? (लॉग इन करें)। 403: मैं जानता हूँ आप कौन हैं, और जवाब है नहीं।
- 301 बनाम 302 बनाम 308 — स्थायी बनाम अस्थायी; 308 POST को POST ही रखता है।
- 400 बनाम 422 — 400 पार्स न हो सकने वाली या स्ट्रक्चर में गलत रिक्वेस्ट के लिए, 422 सही-बनी लेकिन अवैध वैल्यू वाली रिक्वेस्ट के लिए। एक कन्वेंशन चुनें और उसी पर टिके रहें।
- 502 बनाम 503 बनाम 504 — अपस्ट्रीम ने कचरा लौटाया बनाम सर्वर उपलब्ध नहीं बनाम अपस्ट्रीम बहुत धीमा।
- 404 बनाम 410 — अनजान बनाम जानबूझकर हटाया गया।
आपके API को कौन-सा कोड लौटाना चाहिए?
सबसे खास कोड लौटाएँ जो सच हो, उसे एकसमान इस्तेमाल करें, और हमेशा स्थिर मशीन-रीडेबल कोड और इंसानी भाषा के मैसेज वाली JSON एरर बॉडी भेजें। फ़ेलियर को कभी 200 में न लपेटें — क्लाइंट और मॉनिटरिंग दोनों स्टेटस लाइन पर निर्भर हैं। 429 और Retry-After से रेट-लिमिट करें, 400/422 से वैलिडेट करें, 401 से ऑथेंटिकेट, 403 से ऑथराइज़, और 500 उन बग के लिए रखें जिन्हें आप ठीक करने वाले हैं।
आज़माएँ: API रिक्वेस्ट बिल्डर आज़माएँ: API स्टेटस कोड सिम्युलेटर
अक्सर पूछे जाने वाले सवाल
HTTP स्टेटस 200 का क्या मतलब है?
OK — रिक्वेस्ट सफल रही और रिस्पॉन्स बॉडी में नतीजा है। यह GET का डिफ़ॉल्ट सफलता कोड है।
401 और 403 में क्या फ़र्क़ है?
401 का मतलब रिक्वेस्ट में कोई वैध ऑथेंटिकेशन नहीं है (लॉग इन करें या टोकन भेजें)। 403 का मतलब पहचान पता है लेकिन वह एक्शन अनुमत नहीं।
502 Bad Gateway का क्या मतलब है?
एप्लिकेशन के सामने के प्रॉक्सी या लोड बैलेंसर को उससे अवैध रिस्पॉन्स मिला — आमतौर पर एप्लिकेशन सर्वर क्रैश हुआ, रीस्टार्ट हुआ या कनेक्शन लेवल पर टाइम आउट हुआ।
429 Too Many Requests का क्या मतलब है?
क्लाइंट ने रेट लिमिट पार कर दी है। और रिक्वेस्ट भेजने से पहले Retry-After हेडर में दिए समय तक रुकें।
वैलिडेशन एरर पर 400 लौटाएँ या 422?
दोनों स्वीकार्य हैं; 400 क्लासिक विकल्प है, 422 आधुनिक API में फ़ील्ड-लेवल वैलिडेशन के लिए आम है। चुनाव से ज़्यादा पूरे API में एकरूपता मायने रखती है।
क्या 304 Not Modified एरर है?
नहीं। इसका मतलब है क्लाइंट की कैश कॉपी अब भी ताज़ा है, इसलिए सर्वर ने बॉडी नहीं भेजी। यह बैंडविड्थ बचाता है और कैशिंग हेडर काम करने की निशानी है।
इस गाइड में बताए गए टूल्स
किसी भी HTTP स्टेटस कोड का अर्थ, RFC संदर्भ और उसे कब इस्तेमाल करना है — सब एक जगह देखें।
किसी रिस्पॉन्स का HTTP स्टेटस कोड और हेडर जाँचें और जानें कि वह उस स्थिति के लिए सही है या नहीं।
ऐसा सार्वजनिक endpoint पाएँ जो कोई भी HTTP स्टेटस कोड लौटाए, वैकल्पिक देरी और कस्टम JSON बॉडी के साथ, ताकि क्लाइंट की error हैंडलिंग टेस्ट हो सके।
रीडायरेक्ट चेन (301/302/307/308) ट्रेस करें और हर हॉप, स्टेटस तथा अंतिम URL देखें।
HTTP रिक्वेस्ट (method, URL, हेडर, auth, बॉडी) बनाएँ और भेजें, फिर रिस्पॉन्स जाँचें — आपके ब्राउज़र में हल्का-फुल्का Postman।
किसी भी HTTP स्टेटस कोड के लिए उपयुक्त हेडर और बॉडी वाले उदाहरण रिस्पॉन्स बनाएँ।
CORS कॉन्फ़िगरेशन जाँचें: किसी origin से preflight और सामान्य रिक्वेस्ट भेजकर Access-Control-* हेडर देखें।