Вернуть код состояния HTTP 201 в колбу - PullRequest
103 голосов
/ 19 октября 2011

Мы используем Flask для одного из наших API, и мне просто интересно, знает ли кто-нибудь, как вернуть HTTP-ответ 201?

Для ошибок, таких как 404, мы можем позвонить:

from flask import abort
abort(404)

Но для 201 я получаю

LookupError: нет исключения для 201

Нужно ли мне создавать собственное исключение, например this вдокументы?

Ответы [ 5 ]

117 голосов
/ 19 октября 2011

Вы можете прочитать об этом здесь.

return render_template('page.html'), 201
56 голосов
/ 13 сентября 2017

Вы можете использовать Response для возврата любого http-кода состояния.

> from flask import Response
> return Response("{'a':'b'}", status=201, mimetype='application/json')
20 голосов
/ 18 июля 2014

Из-за недостатков рекомендуется отправлять код состояния в операторе возврата, и если вы сохраняете его в какой-либо переменной, такой как

notfound = 404
invalid = 403
ok = 200

и используете

return xyz, notfound

, чем время, убедитесь, что его тип intне ул.как я столкнулся с этой небольшой проблемой, здесь приведен список кодов состояния, за которыми следует глобально http://www.w3.org/Protocols/HTTP/HTRESP.html

Надеюсь, это поможет.

6 голосов
/ 25 января 2019

Вы можете сделать

from flask import make_response

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

если вы хотите вернуть в ответ данные JSON вместе с кодом ошибки Вы можете прочитать об ответах здесь и здесь для подробностей API make_response

5 голосов
/ 11 сентября 2017

В вашем коде колбы вы должны в идеале также указывать тип MIME как можно чаще:

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

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

... и т. Д.

...