मैं एक REST एपीआई के साथ काम कर रहा हूं जो एक सर्वर पर रहता है जो IoT उपकरणों की भीड़ के लिए डेटा संभालता है।
मेरा काम एपीआई का उपयोग कर सर्वर को क्वेरी करने के लिए कहा गया है कि वह उपकरणों के बारे में विशिष्ट प्रदर्शन जानकारी एकत्र करे।
एक उदाहरण में, मैं उपलब्ध उपकरणों और उनके संबंधित पहचानकर्ताओं की एक सूची प्राप्त करता हूं, फिर बाद में उन पहचानकर्ताओं (GUID) का उपयोग करके अधिक विवरण के लिए सर्वर को क्वेरी करता हूं।
सर्वर 500 Internal Server Errorउन ID में से किसी एक पर क्वेरी के लिए वापस आ रहा है । मेरे आवेदन में, एक अपवाद फेंका गया है और मुझे त्रुटि के बारे में विवरण नहीं दिखता है। यदि मैं पोस्टमैन के साथ प्रतिक्रिया की अधिक बारीकी से जांच करता हूं, तो मैं देख सकता हूं कि सर्वर ने JSON को शरीर में वापस लौटा दिया है जिसमें शामिल हैं:
errorMessage: "This ID does not exist"।
इस तथ्य की उपेक्षा करें कि सर्वर ने शुरू करने के लिए आईडी प्रदान की है - जो डेवलपर के लिए एक अलग समस्या है।
REST API 500 Internal Server Errorको यह रिपोर्ट करने के लिए लौटना चाहिए कि कोई क्वेरी किसी ऑब्जेक्ट का संदर्भ है जो मौजूद नहीं है? मेरी सोच के लिए, HTTP प्रतिक्रिया कोड को एपीआई के आंतरिक यांत्रिकी के बजाय, आरईएसटी कॉल की स्थिति का कड़ाई से उल्लेख करना चाहिए। मैं 200 OKत्रुटि और विवरण के साथ प्रतिक्रिया के साथ उम्मीद करूंगा , जो कि एपीआई में प्रश्न में मालिकाना होगा।
यह मेरे लिए होता है कि REST कॉल कैसे संरचित है, इसके आधार पर अपेक्षा में संभावित अंतर है।
इन उदाहरणों पर विचार करें:
http://example.com/restapi/deviceinfo?id=123http://example.com/restapi/device/123/info
पहले मामले में, डिवाइस आईडी को जीईटी चर के रूप में पारित किया जाता है। 404 या 500 इंगित करेगा कि पथ ( /restapi/deviceinfo) या तो नहीं मिला है या सर्वर त्रुटि के परिणामस्वरूप है।
दूसरे मामले में, डिवाइस आईडी URL का हिस्सा है। मुझे इसकी अधिक समझ होगी 404 Not Found, लेकिन फिर भी यह तर्क दे सकता है कि पथ के किन हिस्सों की व्याख्या चर बनाम समापन बिंदु के रूप में की जाती है।