के साथ रिटर्निंग एपीआई त्रुटि संदेश मैं पाइथन और फ्लास्क का उपयोग कर एक विश्वसनीय एपीआई डिजाइन कर रहा हूं। जैसा कि अपेक्षित है, एपीआई को एक एपीआई अनुरोध प्राप्त करने और डेटा वापस करने की आवश्यकता है यदि सभी ठीक हो जाए, लेकिन किसी त्रुटि के उदाहरण में, इसे धीरे-धीरे विफल होने और उचित त्रुटि वापस करने की आवश्यकता है। जब मैं त्रुटि परिणाम देता हूं तो आम तौर पर अपवाद उठाता हूं, लेकिन इस मामले में मुझे उपयोगकर्ता को त्रुटि संदेश वापस करने की आवश्यकता है (कोशिश-पकड़ ब्लॉक?)।पाइथन और फ्लास्क
जिस तरह से मैं वर्तमान में त्रुटियों से निपट रहा हूं वह है कि मेरे कार्य डेटा और त्रुटि दोनों को वापस कर दें, और प्रत्येक स्तर पर डेटा की जांच करें, अंत में या तो एपीआई फ़ंक्शन के कॉलर को डेटा या त्रुटि लौटाएं ।
समस्या यह है कि फ़ंक्शन कॉल के कई स्तर होने पर यह बोझिल हो सकता है, मेरे कार्यों को डेटा और त्रुटियों को कई बार पास करने और प्रत्येक बार जांच करने की आवश्यकता होती है।
क्या ऐसा करने का कोई बेहतर तरीका है? त्रुटि सुधार को और अधिक सरल और सुरुचिपूर्ण बनाने के लिए मैं कुछ सुधार क्या कर सकता हूं?
def get_data()
data1, error = get_some_data() # function not shown
if data1 is None:
return None, "could not retrieve data1"
data2, error = get_some_other_data() # function not shown
if data2 is None:
return None, "could not retrieve data2"
return (data1, data2), None
@app.route("/api/method", methods=['GET'])
def method():
data, error = get_data()
if data is None:
if error is None:
error = "unknown error"
return json.dumps({ "error": error }), 500
return json.dumps({ "data": data }), 200
क्यों आप अपवाद का उपयोग नहीं करते? – georg
क्योंकि वह जेसन प्रारूप में उचित संदेश के बिना आंतरिक सर्वर त्रुटि लौटाएगा। फेसबुक एपीआई शैली सोचो। – Ryan
मैं @ thg435 से सहमत हूं। मुझे लगता है कि एक कोशिश ... छोड़कर अपनी "विधि" को थोड़ा सा साफ कर देगा। आप बस अपने त्रुटि हैंडलिंग ब्लॉक को "छोड़कर" ब्लॉक में ले जाएंगे और फिर भी त्रुटि संदेश वापस कर सकते हैं। इस तरह मैं Django में अजाक्स कॉल के साथ ऐसा करता हूं। इसके अलावा, मुझे फ्लास्क के साथ कोई अनुभव नहीं है, लेकिन अगर यह एक विश्वसनीय (आईएसएच) एपीआई है। और ऐसा प्रतीत होता है क्योंकि आप "GET" जा रहे हैं, आपको उचित स्थिति कोड वापस करना चाहिए। 200 अगर चीजें ठीक हैं। या एक 4XX या 500 (अंतर्निहित समस्या क्या है इसके आधार पर)। –