मुझे रूटिंग होने से पहले फ्लास्क अनुरोध ऑब्जेक्ट को संशोधित करने का प्रयास करने में कठिनाई हो रही है।मैं फ्लास्क मॉड्यूल में PUT और DELETE के लिए HTTP विधियों को ओवरराइड कैसे कर सकता हूं?
मेरा एपीआई मॉड्यूल (मेरा पूरा फ्लास्क ऐप नहीं) एक विशेष शीर्षलेख भेजकर PUT को पकड़ने और संचालन को हटाने पर निर्भर करता है। मुझे "-Method" शीर्षलेख की सामग्री को जांचने और फ्लास्क अनुरोध ऑब्जेक्ट को तदनुसार संशोधित करने से पहले फ्लास्क अनुरोध ऑब्जेक्ट को संशोधित करने की आवश्यकता है।
इस छोटे, pythonic, स्पष्ट कोड मैं चाहूँगा काम है करने के लिए:
@api.before_request
def method_scrubbing():
if request.headers.has_key('-Method'):
method = request.headers['-Method'].upper()
tagalog.log("in before_request, -Method = {}".format(method), 'force')
if method not in ['PUT', 'DELETE']:
raise ApiMethodException(method)
else:
request.method = method
... लेकिन मैं WERKZEUG से एक "केवल संपत्ति पढ़ें" त्रुटि मिलती है: http://drktd.com/74yk
मैं http://flask.pocoo.org/snippets/38/ पर आर्मीन की पोस्ट प्रतीत होती है लेकिन यह ऐप-व्यापी (मॉड्यूल के लिए विशिष्ट नहीं) प्रतीत होता है।
काफी काम नहीं करता है। यदि मैंने ऐसा कहा है, और जैसा कि आपने कहा है, 'request.environ [' REQUEST_METHOD ']' ''' '' 'पर सेट करें,' request.method' वास्तव में मूल्य को तुरंत '' PUT'' 'के रूप में दिखाता है। हालांकि, अनुरोध अभी भी वहां जाता है जहां यह वैसे भी चला जाएगा (इस मामले में, '@ api.route ('/ isoSpace//टाइल/', विधियों = ['पोस्ट'] से सजाए गए मार्ग पर) ')। उस फ़ंक्शन के भीतर, 'request.method' फिर से' POST 'जैसा दिखता है। –
मिडलवेयर केवल एक मॉड्यूल पर लागू करने का कोई तरीका है? –
डब्ल्यूएसजीआई परत पर मध्यवर्ती काम नहीं कर रहे हैं। हालांकि आप मिडलवेयर को कुछ बुनियादी पथ जांच करने दे सकते हैं। –