क्या मुझे अपना HTTP स्टेटस कोड बनाना चाहिए? (एक ला ट्विटर 420: एन्हांस योर कैलम)


24

मैं वर्तमान में एक HTTP एपीआई लागू कर रहा हूं, मेरा पहला।

मैं HTTP स्थिति कोड के लिए विकिपीडिया पृष्ठ को देखने में बहुत समय बिता रहा हूं, क्योंकि मैं सही स्थितियों के लिए सही कोड लागू करने के लिए दृढ़ हूं। उस पृष्ठ पर सूचीबद्ध संख्या 420 के साथ एक कोड है, जो एक कस्टम कोड है जिसे ट्विटर दर सीमित करने के लिए उपयोग करता था।

हालांकि रेट लिमिटिंग के लिए पहले से ही एक कोड है। यह 429 है।

इससे मुझे आश्चर्य हुआ कि वे एक कस्टम सेट क्यों करेंगे, जब पहले से ही उपयोग का मामला है। क्या यह सिर्फ प्यारा है? और यदि ऐसा है, तो किन परिस्थितियों में यह एक अलग स्थिति कोड वापस करने के लिए स्वीकार्य होगा, और क्या, अगर किसी भी ग्राहकों को इसके साथ समस्या हो सकती है?

मैंने कहीं पढ़ा है कि मोज़िला मजाक की 418: I’m a teapotप्रतिक्रिया को लागू नहीं करता है , जो मुझे लगता है कि ग्राहक चुनते हैं कि वे किस स्थिति कोड को लागू करते हैं। अगर यह सच है, तो मैं कल्पना कर सकता हूं कि ट्विटर की अजीब सी समस्या आपके शांत कोड को बढ़ा सकती है।

जब तक मैं गलत नहीं हूँ, और हम जो भी पसंद करते हैं उसका अर्थ करने के लिए हम किसी भी कोड संख्या को उपयुक्त कर सकते हैं, और यह कि केवल कन्वेंशन यह निर्धारित करता है कि 404 का अर्थ नहीं मिला है, और 429 का अर्थ है कि यह आसान है।

जवाबों:


31

संपूर्ण इंटरनेट सम्मेलनों पर बनाया गया है। हम उन्हें RFC कहते हैं। जबकि कोई भी आकर आपको गिरफ्तार नहीं करेगा यदि आप किसी RFC का उल्लंघन करते हैं, तो आप जोखिम उठाते हैं कि आपकी सेवा बाकी दुनिया के साथ हस्तक्षेप नहीं करेगी। और यदि ऐसा होता है, तो आप अपने स्टार्टअप को कोई ग्राहक नहीं मिलने का जोखिम उठाते हैं, आपके व्यवसाय को खराब प्रेस, आपके स्टॉकहोल्डरों को विद्रोह, आपके स्थायी रूप से बंद हो जाने, आदि।

HTTP स्टेटस कोड की अपनी आईएएनए रजिस्ट्री होती है , हर एक आरएफसी (या एक मामले में, आईडी) में वापस आने योग्य है जो इसे परिभाषित करता है।

RFC 6585 में परिभाषित ट्विटर के अजीब 420 स्टेटस कोड बनाम मानक 429 स्टेटस कोड के विशेष मामले में , सबसे अधिक संभावना स्पष्टीकरण यह है कि उत्तरार्द्ध केवल हाल ही में परिभाषित किया गया था; अप्रैल 2012 से आरएफसी की तारीखें। हम देखते हैं कि ट्विटर अपने एपीआई के पिछले पदावनत संस्करण 1 में केवल 420 का उपयोग करता है; वर्तमान एपीआई संस्करण 1.1 वास्तव में 429 स्थिति कोड का उपयोग करता है । इसलिए यह स्पष्ट है कि ट्विटर को इसके लिए एक स्टेटस कोड की आवश्यकता थी और उन्होंने अपनी खुद की परिभाषा दी; एक बार मानक उपलब्ध होने के बाद उन्होंने इसे स्विच किया।

सबसे अच्छा अभ्यास, ज़ाहिर है, जितना संभव हो उतना मानकों के करीब रहना है। जब आप RFC पढ़ते हैं, तो आपको लगभग हमेशा "MUST" और "SHOULD" जैसे शब्द मिलेंगे; जब आप अपने आवेदन का निर्माण कर रहे होते हैं, तो इनका विशिष्ट अर्थ होता है, जिसे आप RFC 2119 में पा सकते हैं ।


2
+1 ऐतिहासिक संदर्भ जोड़ने के लिए कि क्यों स्थिति कोड 420मौजूद है और यह अब 'सेवा से बाहर' है।

2

यह सवाल इस मुद्दे को थोड़ा हल करता है। लेकिन बात यह है, जबकि आप तकनीकी रूप से अपने इच्छित किसी भी स्टेटस कोड को बना सकते हैं, स्टेटस कोड अर्थों के पारंपरिक दायरे के बाहर एक स्टेटस कोड बना सकते हैं, जो आपके एपीआई को दूसरों के लिए अधिक अप्रिय और रहस्यमय बनाता है। जब तक कि वह बिंदु नहीं है, और आप जो एपीआई बना रहे हैं, वह इतना आश्चर्यजनक है कि हर कोई ख़ुशी से आपके नेतृत्व का पालन करने के लिए अपनी कोडिंग को बदल देगा, तो यह वैसे भी क्या मायने रखता है?

यह इसे उबालता है: किसी भी मानक को तोड़ा जा सकता है। लेकिन अगर आप इसे तोड़ते हैं तो आप क्या करते हैं या ऐसा करके हार जाते हैं?

सामान्य तौर पर, ऐसे मामलों में जहां आप कुछ अलग कर सकते हैं लेकिन मानक मानकों का पालन करते हैं, मानकों का पालन करना सबसे अच्छा है जब तक कि स्थापित मानकों से दूर रहने के लिए बहुत मजबूत और सम्मोहक कारण नहीं है। ट्विटर के मामले में 420: Enhance Your Calmवे एक प्रतिक्रिया कोड बना रहे हैं जो स्पष्ट रूप से एक अनोखी स्थिति के लिए बोलता है जो वे सामना करते हैं। जो सेवा से इनकार किए बिना अनुरोधों को धीमा कर रहा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.