Şişeye HTTP durum kodu 201 döndür


141

Flask'ı API'larımızdan biri için kullanıyoruz ve sadece birinin HTTP yanıtı 201'i nasıl döndüreceğini bilip bilmediğini merak ediyordum?

404 gibi hatalar için şunu arayabiliriz:

from flask import abort
abort(404)

Ama 201 için anladım

LookupError: 201 için bir istisna yok

Ben gibi kendi istisna oluşturmak gerekir mi bu docs?


18
return '', 201
Luc

Yanıtlar:


158

Burada okuyabilirsiniz .

return render_template('page.html'), 201

11
Bu gerektirir page.html... Kendi başına çalışmaz.
Chris Stryczynski

Benim için bu tür hata işleme (IIS arkasında) sadece InvalidUsage werkzeug.exceptions.HTTPException'ın bir çocuğu ise işe yaradı, genel bir İstisna değil
Gyula Sámuel Karli

119

Yanıt'ı herhangi bir http durum kodunu döndürmek için kullanabilirsiniz.

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

2
Kabul edilen cevap bu olmalı, bunu yapmanın yolu bu.
LoopsGod

Bu gerçekten mükemmel bir çözüm
Shahriar Rahman Zahin

daha önce hiç düşünmeyin
Arian Saputra

26

Eksiklerin önerdiği gibi dönüş kodunda durum kodu gönderin ve eğer böyle bir değişkente saklıyorsanız

notfound = 404
invalid = 403
ok = 200

ve kullanarak

return xyz, notfound

zaman türünün int str olmadığından emin olun. Bu küçük sorunla karşı karşıya olduğum için, küresel olarak takip edilen durum kodu listesi de http://www.w3.org/Protocols/HTTP/HTRESP.html

Umarım yardımcı olur.


17

Yapabilirsin

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

Yanıtta hata koduyla birlikte bir JSON verisi döndürmek istiyorsanız make_response API'sı ayrıntıları için yanıtları burada ve burada okuyabilirsiniz


6

Şişe kodunuzda, ideal olarak MIME türünü olabildiğince sık belirtmelisiniz:

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

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

...vb


1

yanıt göndermek için flask_api'yi de kullanabilirsiniz

from flask_api import status

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

burada referans bulabilirsiniz http://www.flaskapi.org/api-guide/status-codes/


1

API'nın nasıl oluşturulduğuna bağlı olarak, normalde 201 (oluşturulmuş) ile oluşturulan kaynağı döndürürsünüz. Örneğin, bir kullanıcı hesabı oluşturuyorsa aşağıdakine benzer bir şey yaparsınız:

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

Düzeltilen sayının döndürülen durum kodu olduğunu unutmayın.

Alternatif olarak, istemciye aşağıdaki gibi bir mesaj göndermek isteyebilirsiniz:

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

0

Benim durumumda çalışması için yukarıdakileri birleştirmem gerekiyordu

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

0

Yani, eğer flask_restfulAPI için Paket kullanıyorsanız 201 döndüren gibi olur

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

burada datadict, string gibi herhangi bir yıkanabilir / JsonSerialiable değeri olmalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.