Vracet stavový kód HTTP 201 v baňce

hlasů
72

Používáme Baňka na jednom z našich API a já se jen zeptat, jestli někdo ví, jak se vrátí odpověď HTTP 201?

Na chyby, jako je 404 můžeme nazvat:

from flask import abort
abort(404)

Ale pro 201 získám

LookupError: žádná výjimka pro 201

Musím vytvořit vlastní výjimku, jako to v docs?

Položena 19/10/2011 v 16:48
zdroj uživatelem
V jiných jazycích...                            


9 odpovědí

hlasů
90

Můžete si přečíst o tom zde.

return render_template('page.html'), 201
Odpovězeno 19/10/2011 v 17:23
zdroj uživatelem

hlasů
17

Jako postrádá navrhl poslat stavový kód ve vratném prohlášení, a pokud jste to skladování v některých proměnných, jako je

notfound = 404
invalid = 403
ok = 200

a za použití

return xyz, notfound

než čas zajistit, aby jeho typ je int není str. Jak jsem stál tento malý problém, i zde je seznam stavový kód globálně následoval http://www.w3.org/Protocols/HTTP/HTRESP.html

Doufám, že to pomůže.

Odpovězeno 18/07/2014 v 13:22
zdroj uživatelem

hlasů
0

Ve vašem baňce kódu, měli byste v ideálním případě určit typ MIME tak často, jak je to možné, stejně:

vrátit html_page_str, 200, { 'ContentType': 'text / html'}

vratné json.dumps ({ 'úspěch': true}), 200, { 'ContentType': 'aplikace / JSON'}

...atd

Odpovězeno 11/09/2017 v 16:51
zdroj uživatelem

hlasů
16

Můžete použít Response vrátit jakýkoliv stavový kód HTTP.

> from flask import Response
> return Response("{'a':'b'}", status=201, mimetype='application/json')
Odpovězeno 13/09/2017 v 13:52
zdroj uživatelem

hlasů
2

Můžete dělat

from flask import make_response

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

Chcete-li se vrátit JSON data v reakci spolu s kódem chyby Můžete si přečíst o reakcích zde a zde pro make_response podrobnosti API

Odpovězeno 25/01/2019 v 08:28
zdroj uživatelem

hlasů
0

V mém případě jsem musel spojit výše uvedené, aby to fungovalo

return Response(json.dumps({'Error': 'Error in payload'}), 
status=422, 
mimetype="application/json")
Odpovězeno 03/10/2019 v 13:29
zdroj uživatelem

hlasů
0

můžete také použít flask_api pro zaslání odpovědi

from flask_api import status

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

naleznete odkaz zde http://www.flaskapi.org/api-guide/status-codes/

Odpovězeno 12/10/2019 v 14:04
zdroj uživatelem

hlasů
0

Takže, pokud používáte flask_restfulbalíček pro API vrací 201 by se stane jakoby

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

kde databy měl být jakýkoli hashable / JsonSerialiable hodnota, jako dict, řetězec.

Odpovězeno 04/12/2019 v 07:48
zdroj uživatelem

hlasů
0

V závislosti na tom, jak je vytvořen API, obvykle s 201 (vytvořený) byste vrátit zdroj, který byl vytvořen. Například pokud bylo vytvořit uživatelský účet, který by dělal něco takového:

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

Upozorňujeme, že fixuje číslo je stavový kód se vrátil.

Případně můžete chtít odeslat zprávu na straně klienta, jako jsou:

return {"msg": "Created Successfully"}, 201
Odpovězeno 04/12/2019 v 10:34
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more