Возвращать код состояния HTTP 201 в колбе

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

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

from flask import abort
abort(404)

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

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

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

Ответ 1

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

return render_template('page.html'), 201

Ответ 2

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

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

Ответ 3

Как не хватает предложенного кода статуса отправки в операторе return и если вы храните его в некоторой переменной, например

notfound = 404
invalid = 403
ok = 200

и используя

return xyz, notfound

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

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

Ответ 4

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

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

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

Ответ 5

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

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

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

...так далее

Ответ 6

В моем случае мне пришлось объединить все вышеперечисленное, чтобы заставить его работать

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

Ответ 7

вы также можете использовать 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/