Ş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.