एक यथार्थवादी एपीआई डिजाइन करना जिसमें कुछ तत्व हैं जो अपस्ट्रीम सेवाओं (जैसे डेटाबेस, एक और वेब सेवा इत्यादि) पर निर्भर करते हैं। जिस मामले में एप्लिकेशन स्वयं एक वैध स्थिति में है, और अभी भी इसका उपयोग किया जा सकता है, लेकिन उन अपस्ट्रीम सेवाओं में से एक तक पहुंचा नहीं जा सकता है (या तो नेटवर्क समस्या के कारण, या जो भी हो), क्या वहां उपयोग करने के लिए एक और उचित स्थिति कोड है HTTP 500?अपस्ट्रीम सेवा विफलता के लिए आरईएसटी एपीआई स्टेटस कोड?
HTTP 500 मुझे अनुचित लगता है क्योंकि समस्या नहीं है (जैसा कि आरएफसी परिभाषित करता है) एक "आंतरिक सर्वर त्रुटि"। सर्वर ठीक है, और फिर भी पिघलने के बिना अन्य अनुरोधों को संसाधित करने में सक्षम है, यह तब तक खराब हो गया है जब तक कि दूसरी सेवा ऑनलाइन वापस न आ जाए।
क्योंकि आवेदन प्रभावी ढंग से शायद यह अन्य सेवा (थोड़े) के लिए एक प्रॉक्सी के रूप में कार्य कर रहा है, या 503 - Service Unavailable
क्योंकि यह एक सेवा है जो अनुपलब्ध वास्तव में है मैं 502 - Bad Gateway
के बारे में सोचा है, लेकिन वे बिल्कुल सही महसूस नहीं किया था। खासतौर पर आखिरी वाला, क्योंकि लोड के कारण अनुपलब्ध होने या प्रक्रिया के लिए बहुत से अनुरोध होने का अर्थ है।
हाँ, डीबी एक खराब उदाहरण था और मैं उस पर सहमत हूं। जो वास्तव में मुझे वास्तविक मामले में चिंतित करता है, वह अपस्ट्रीम सेवा है। मैं क्लाइंट के बारे में अपना ध्यान नहीं लेता, लेकिन एक ग्राहक के रूप में मैं * देखभाल करता हूं कि यह किस तरह का 500 है, क्योंकि कुछ अस्थायी समस्याओं का अर्थ है, कुछ विशिष्ट संसाधनों का अर्थ देते हैं, और कुछ का मतलब है कि पूरा ऐप दुर्घटनाग्रस्त हो गया है (500)। मैं समझता हूं कि 'अच्छा लग रहा है' के बारे में आपका क्या मतलब है, लेकिन जो मैं वास्तव में चिंतित हूं, वह मेरे ग्राहकों को सही जानकारी भेज रहा है ताकि वे इसे सही तरीके से संभाल सकें। – Paul
क्या आप एक विशिष्ट परिदृश्य दे सकते हैं? किस तरह की सेवा अनुपलब्ध है और यह अनुपलब्ध क्यों है। आप उस मामले में क्लाइंट को वास्तव में क्या करना चाहते हैं। –