python - कस्टम त्रुटि हैंडलर का उपयोग करते समय abort कमांड से त्रुटि संदेश तक पहुंच कैसे प्राप्त करें




http flask (2)

एक पायथन फ्लास्क सर्वर का उपयोग करके, मैं abort कमांड के साथ एक HTTP त्रुटि प्रतिक्रिया फेंकने में सक्षम होना चाहता हूं और एक कस्टम प्रतिक्रिया स्ट्रिंग और शरीर में एक कस्टम संदेश का उपयोग करना चाहता हूँ

@app.errorhandler(400)
def custom400(error):
    response = jsonify({'message': error.message})
    response.status_code = 404
    response.status = 'error.Bad Request'
    return response

abort(400,'{"message":"custom error message to appear in body"}')

लेकिन error.message चर एक खाली स्ट्रिंग के रूप में आता है। मुझे कस्टम त्रुटि हैंडलर के साथ निरस्त फ़ंक्शन के दूसरे चर तक पहुंच प्राप्त करने के तरीके पर प्रलेखन नहीं मिल रहा है


मैं बस इसे इस तरह करता हूं:

    abort(400, description="Required parameter is missing")

यदि आप flask/__init__.py देखते हैं तो आप देखेंगे कि abort वास्तव में werkzeug.exceptions से आयात किया जाता है। Aborter क्लास को देखते हुए, हम देख सकते हैं कि जब संख्यात्मक कोड के साथ बुलाया जाता है, तो विशेष HTTPException subclass को देखा जाता है और Aborter इंस्टेंस को प्रदान किए गए सभी तर्कों के साथ बुलाया जाता है। HTTPException देखते हुए, लाइन 85-89 पर विशेष ध्यान देकर हम देख सकते हैं कि दूसरा तर्क HTTPException.__init__ को पास किया गया है HTTPException.__init__ description संपत्ति में संग्रहीत है, जैसा कि @ डीरन ने बताया।

आप या तो description संपत्ति से संदेश तक पहुंच सकते हैं:

@app.errorhandler(400)
def custom400(error):
    response = jsonify({'message': error.description['message']})
    # etc.

abort(400, {'message': 'custom error message to appear in body'})

या सिर्फ विवरण स्वयं ही पास करें:

@app.errorhandler(400)
def custom400(error):
    response = jsonify({'message': error.description})
    # etc.

abort(400, 'custom error message to appear in body')




http-error