200
ऊग ... (309, 400, 403, 409, 415, 422) ... बहुत सारे उत्तर अनुमान लगाने, बहस करने और एक सफल HTTP अनुरोध के लिए सबसे अच्छा रिटर्न कोड है, लेकिन एक असफल रीस्ट कॉल के लिए मानकीकरण करने की कोशिश कर रहे हैं ।
यह है गलत HTTP स्थिति कोड और बाकी स्थिति कोड मिश्रण।
हालाँकि, मैंने कई कार्यान्वयनों को मिलाते हुए देखा, और कई डेवलपर्स मुझसे सहमत नहीं हो सकते हैं।
HTTP रिटर्न कोड HTTP Request
खुद से संबंधित हैं । एक REST कॉल हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल अनुरोध का उपयोग करके किया जाता है और यह अपने आप में लागू REST विधि की तुलना में निम्न स्तर पर काम करता है। REST एक अवधारणा / दृष्टिकोण है, और इसका आउटपुट एक व्यावसायिक / तार्किक परिणाम है, जबकि HTTP परिणाम कोड एक परिवहन है।
उदाहरण के लिए, जब आप कॉल करते हैं, तो "404 नहीं मिला" वापस लौटते हैं / उपयोगकर्ताओं को भ्रमित करते हैं, क्योंकि इसका मतलब हो सकता है:
- URI गलत है (HTTP)
- कोई उपयोगकर्ता नहीं मिला (REST)
"403 निषिद्ध / पहुँच निषेध" का अर्थ हो सकता है:
- विशेष अनुमति की आवश्यकता है। उपयोगकर्ता / पासवर्ड पूछकर ब्राउज़र इसे संभाल सकते हैं। (एचटीटीपी)
- सर्वर पर गलत पहुंच अनुमतियाँ कॉन्फ़िगर की गई हैं। (एचटीटीपी)
- आपको प्रमाणित होना चाहिए (REST)
और सूची '500 सर्वर त्रुटि' (Apache / Nginx HTTP फेंकी गई त्रुटि या REST में व्यावसायिक बाधा त्रुटि) या अन्य HTTP त्रुटियों आदि के साथ जारी रह सकती है ...
कोड से, यह समझना मुश्किल है कि विफलता का कारण क्या था, HTTP (परिवहन) विफलता या REST (तार्किक) विफलता।
यदि HTTP अनुरोध भौतिक रूप से सफलतापूर्वक किया गया था, तो उसे हमेशा 200 कोड वापस करना चाहिए , भले ही रिकॉर्ड पाया गया हो या नहीं। क्योंकि URI संसाधन पाया और HTTP सर्वर द्वारा नियंत्रित किया गया था। हां, यह एक खाली सेट लौटा सकता है। क्या HTTP परिणाम के रूप में 200 के साथ एक खाली वेब-पेज प्राप्त करना संभव है, है ना?
इसके बजाय आप कुछ विकल्पों के साथ 200 HTTP कोड वापस कर सकते हैं:
- JSON परिणाम में "त्रुटि" ऑब्जेक्ट यदि कुछ गलत हो जाता है
- यदि कोई रिकॉर्ड नहीं मिला तो JSON सरणी / ऑब्जेक्ट खाली करें
- एक बेहतर परिणाम के लिए पिछले विकल्पों के साथ संयोजन में एक बूल परिणाम / सफलता ध्वज।
साथ ही, कुछ इंटरनेट प्रदाता आपके अनुरोधों को रोक सकते हैं और आपको 404 HTTP कोड लौटा सकते हैं। इसका मतलब यह नहीं है कि आपका डेटा नहीं मिला है, लेकिन यह परिवहन स्तर पर कुछ गलत है।
से विकी :
जुलाई 2004 में, यूके टेलीकॉम प्रदाता बीटी ग्रुप ने क्लीनफीड कंटेंट ब्लॉकिंग सिस्टम की तैनाती की, जो कि इंटरनेट वॉच फाउंडेशन द्वारा संभावित रूप से अवैध रूप से पहचानी गई सामग्री के लिए किसी भी अनुरोध पर 404 त्रुटि देता है। अन्य ISP समान परिस्थितियों में HTTP 403 "निषिद्ध" त्रुटि लौटाते हैं। थाईलैंड और ट्यूनीशिया में सेंसरशिप छुपाने के साधन के रूप में नकली 404 त्रुटियों को नियोजित करने की प्रथा भी बताई गई है। ट्यूनीशिया में, जहां 2011 की क्रांति से पहले सेंसरशिप गंभीर थी, लोग नकली 404 त्रुटियों की प्रकृति से अवगत हुए और "अम्मर 404" नामक एक काल्पनिक चरित्र बनाया, जो "अदृश्य सेंसर" का प्रतिनिधित्व करता है।
बस कुछ इस तरह से जवाब क्यों नहीं?
{
"result": false,
"error": {"code": 102, "message": "Validation failed: Wrong NAME."}
}
Google हमेशा अपने जियोकोडिंग एपीआई में 200 को स्टेटस कोड के रूप में देता है, भले ही अनुरोध तार्किक रूप से विफल हो: https://developers.google.com/maps/documentation/geocoding/intro#StatusCodes
सफल HTTP अनुरोधों के लिए Facebook हमेशा 200 वापस करता है, भले ही REST अनुरोध विफल हो: https://developers.facebook.com/docs/graph-api/use-graph-api/error-handling
यह सरल है, HTTP स्थिति कोड HTTP अनुरोधों के लिए हैं। REST API आपका है, आपकी स्थिति कोड परिभाषित करें।