python - फ्लास्क-अपरिवर्तनीय सीओआरएस विकल्प की अनदेखी में विधि



rest flask (1)

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

यदि आप कॉरस मिडलवेयर का उपयोग करते हैं जो फ्लास्क-कॉर्स द्वारा प्रदान की जाती है, तो डेकोरेटर फॉर्म के बजाय, हैंडल किए गए अपवादों और अवरोधों के मामले में, सीओआरएस शीर्षकों को उम्मीद के अनुसार इंजेक्ट किया जाएगा।

अगर एक अप्रतिबंधित अपवाद होता है, (उदाहरण के लिए आपके कोड में कोई त्रुटि है, और 500 आंतरिक सर्वर त्रुटि है), फ्लास्क मिडलवेयर को बायपास करता है, और after_request संचालकों को नहीं चलाया जाता है।

पूर्ण प्रकटीकरण, मैंने फ्लास्क-कॉर्स को लिखा था।

मेरे पास कुछ कॉरस विकल्पों के साथ कॉन्फ़िगर किया गया फ्लास्क-रेसिफल एपीआई है:

api = Api()
api.decorators=[cors.crossdomain(origin='*', headers=['accept', 'Content-Type'])]

...

api.init_app(app)

मेरी एपीआई ने POST अनुरोधों को स्वीकार किया है, जो विफल हो सकता है यदि अनुरोध में डेटा अमान्य है:

class myAPI(Resource):
    def post(self):
        args = request.get_json()
        if args.get('something'):
            return {'message': 'Request worked, data received!',
                    'something': args['something']}
        else:
            abort(500, "Error: Data must contain a 'something' field!")

जब मैं अपने एपीआई के लिए एक सफल POST अनुरोध करता हूँ तो मैं देख सकता हूँ कि कॉरस विकल्प ठीक से सेट किए गए हैं:

...
* upload completely sent off: 81 out of 81 bytes
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Content-Type: application/json
< Content-Length: 205
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Methods: HEAD, GET, POST, OPTIONS
< Access-Control-Max-Age: 21600
< Access-Control-Allow-Headers: ACCEPT, CONTENT-TYPE
< Server: Werkzeug/0.9.4 Python/2.7.6

अगर, हालांकि, मेरी कक्षा में पोस्ट कॉल गर्भपात विधि (जानबूझकर अनुरोध को बुरा डेटा भेजकर) से बाहर निकलती है तो Access-Control-* फ़ील्ड सभी प्रतिक्रिया से गुम हैं:

* upload completely sent off: 75 out of 75 bytes
* HTTP 1.0, assume close after body
< HTTP/1.0 500 INTERNAL SERVER ERROR
< Content-Type: application/json
< Content-Length: 51
< Server: Werkzeug/0.9.4 Python/2.7.6

क्या मेरे abort विधि को मेरे कॉरस नियमों के साथ अच्छा करना संभव है, या क्या मुझे अपनी पूर्ण प्रतिक्रिया का निर्माण करना चाहिए और गर्भपात समारोह का इस्तेमाल करना चाहिए?





abort