Мы используем Flask для одного из наших API, и мне просто интересно, знает ли кто-нибудь, как вернуть ответ HTTP 201?
Для таких ошибок, как 404, мы можем позвонить:
from flask import abort
abort(404)
Но за 201 я получаю
LookupError: нет исключения для 201
Нужно ли мне создавать собственное исключение, подобное этому, в документации?
python
flask
httpresponse
ingh.am
источник
источник
return '', 201
Ответы:
Вы можете прочитать об этом здесь.
return render_template('page.html'), 201
источник
page.html
... Само по себе это не сработает.Вы можете использовать Response, чтобы вернуть любой код состояния http.
> from flask import Response > return Response("{'a':'b'}", status=201, mimetype='application/json')
источник
Из-за недостатков предлагается отправить код состояния в операторе возврата, и если вы сохраняете его в какой-либо переменной, например
notfound = 404 invalid = 403 ok = 200
и используя
return xyz, notfound
чем время, убедитесь, что его тип - int, а не str. поскольку я столкнулся с этой небольшой проблемой, вот список кода состояния, который следует глобально http://www.w3.org/Protocols/HTTP/HTRESP.html
Надеюсь, это поможет.
источник
Ты можешь сделать
result = {'a': 'b'} return jsonify(result), 201
если вы хотите вернуть данные JSON в ответе вместе с кодом ошибки. Вы можете прочитать об ответах здесь и здесь для получения информации об API make_response.
источник
В вашем коде фляги вы должны в идеале указывать тип MIME как можно чаще:
return html_page_str, 200, {'ContentType':'text/html'} return json.dumps({'success':True}), 200, {'ContentType':'application/json'}
...так далее
источник
вы также можете использовать 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/
источник
Итак, если вы используете
flask_restful
пакет для API, возвращаемый 201 будет похож наdef bla(*args, **kwargs): ... return data, 201
где
data
должно быть любое значение hashable / JsonSerialiable, например dict, string.источник
В зависимости от того, как создается API, обычно с 201 (созданным) вы возвращаете ресурс, который был создан. Например, если бы он создавал учетную запись пользователя, вы бы сделали что-то вроде:
return {"data": {"username": "test","id":"fdsf345"}}, 201
Обратите внимание, что номер с постфиксом - это возвращаемый код состояния.
В качестве альтернативы вы можете отправить клиенту сообщение, например:
return {"msg": "Created Successfully"}, 201
источник
В моем случае мне пришлось объединить вышеперечисленное, чтобы заставить его работать
return Response(json.dumps({'Error': 'Error in payload'}), status=422, mimetype="application/json")
источник