फ्लास्क में HTTP स्टेटस कोड 201 लौटाएं


141

हम अपने एपीआई में से एक के लिए फ्लास्क का उपयोग कर रहे हैं और मैं बस सोच रहा था कि क्या किसी को पता था कि HTTP प्रतिक्रिया 201 कैसे वापस करनी है?

404 जैसी त्रुटियों के लिए हम कॉल कर सकते हैं:

from flask import abort
abort(404)

लेकिन 201 के लिए मुझे मिलता है

लुकअप: 201 के लिए कोई अपवाद नहीं है

मैं की तरह अपने ही अपवाद बनाने की आवश्यकता है इस डॉक्स में?


18
return '', 201
ल्यूक

जवाबों:


158

आप इसके बारे में यहां पढ़ सकते हैं

return render_template('page.html'), 201

11
इसके लिए आवश्यकता है page.html... यह अपने आप काम नहीं करेगा।
क्रिस स्ट्राइकिनस्की

मेरे लिए इस प्रकार की त्रुटि से निपटने (IIS के पीछे) ने केवल तभी काम किया जब InvalidUsage werkzeug.exception.HTTPException का बच्चा था, सामान्य अपवाद नहीं
Gyula Sámuel Karli

118

आप किसी भी HTTP स्थिति कोड को वापस करने के लिए रिस्पांस का उपयोग कर सकते हैं।

> from flask import Response
> return Response("{'a':'b'}", status=201, mimetype='application/json')

2
यह स्वीकृत उत्तर होना चाहिए, इसे करने का तरीका है।
लूप्सगॉड

यह वास्तव में सही समाधान है
शाहर रहमान ज़हीन

महान, पहले कभी मत सोचो
एरियन सपूत

26

जैसा कि कमी के अनुसार रिटर्न स्टेटमेंट में स्टेटस कोड भेजने का सुझाव दिया गया है और यदि आप इसे कुछ वैरिएबल में स्टोर कर रहे हैं जैसे

notfound = 404
invalid = 403
ok = 200

और का उपयोग कर

return xyz, notfound

समय से सुनिश्चित करें कि इसका प्रकार int नहीं है। जैसा कि मैंने इस छोटे से मुद्दे का सामना किया, यहाँ भी स्थिति कोड की सूची दी गई है जिसके बाद विश्व स्तर पर http://www.w3.org/Protocols/HTTP/HTR3PP.html

आशा करता हूँ की ये काम करेगा।


17

तुम कर सकते हो

result = {'a': 'b'}
return jsonify(result), 201

यदि आप त्रुटि कोड के साथ जवाब में एक JSON डेटा वापस जाने के लिए चाहते हैं तो आप प्रतिक्रियाओं के बारे में पढ़ सकते हैं यहाँ और यहाँ make_response एपीआई जानकारी के लिए


5

अपने फ्लास्क कोड में, आपको आदर्श रूप में MIME प्रकार को यथासंभव निर्दिष्ट करना चाहिए, साथ ही:

return html_page_str, 200, {'ContentType':'text/html'}

return json.dumps({'success':True}), 200, {'ContentType':'application/json'}

...आदि


1

प्रतिक्रिया भेजने के लिए आप flask_api का भी उपयोग कर सकते हैं

from flask_api import status

@app.route('/your-api/')
def empty_view(self):
    content = {'your content here'}
    return content, status.HTTP_201_CREATED

आप यहाँ संदर्भ पा सकते हैं http://www.flaskapi.org/api-guide/status-codes/


1

एपीआई कैसे बनाया जाता है, इस पर निर्भर करता है कि आम तौर पर 201 (बनाया) के साथ आप उस संसाधन को वापस कर देंगे जो बनाया गया था। उदाहरण के लिए यदि यह एक उपयोगकर्ता खाता बना रहा था तो आप कुछ ऐसा करेंगे:

return {"data": {"username": "test","id":"fdsf345"}}, 201

ध्यान दें कि उपसर्ग संख्या वापस लौटी स्थिति कोड है।

वैकल्पिक रूप से, आप ग्राहक को एक संदेश भेजना चाह सकते हैं जैसे:

return {"msg": "Created Successfully"}, 201

0

मेरे मामले में मुझे इसे काम करने के लिए उपरोक्त संयोजन करना पड़ा

return Response(json.dumps({'Error': 'Error in payload'}), 
status=422, 
mimetype="application/json")

0

इसलिए, यदि आप flask_restfulएपीआई की वापसी के लिए पैकेज का उपयोग कर रहे हैं तो 201 की तरह हो जाएगा

def bla(*args, **kwargs):
    ...
    return data, 201

जहां dataकिसी भी हैशियस / JsonSerialiable मान होना चाहिए, जैसे तानाशाही, स्ट्रिंग।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.