我们正在使用Flask为我们的API之一,我只是想知道是否有人知道如何返回HTTP响应201?

对于404这样的错误,我们可以调用:

from flask import abort
abort(404)

但是201美元我得到了

LookupError: 201没有例外

我需要在文档中创建自己的异常吗?


当前回答

你只需要在你返回的数据后添加你的状态码,就像这样:

from flask import Flask

app = Flask(__name__)
@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!',201
if __name__ == '__main__':
    app.run()

这是一个基本的烧瓶项目。启动后,您会发现当我们请求http://127.0.0.1:5000/时,您将从web浏览器控制台获得状态201。

其他回答

你可以这样做

result = {'a': 'b'}
return result, 201

如果您想在响应中返回一个JSON数据和错误代码 您可以在这里和这里阅读有关make_response API的详细信息

你只需要在你返回的数据后添加你的状态码,就像这样:

from flask import Flask

app = Flask(__name__)
@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!',201
if __name__ == '__main__':
    app.run()

这是一个基本的烧瓶项目。启动后,您会发现当我们请求http://127.0.0.1:5000/时,您将从web浏览器控制台获得状态201。

您可以使用Response来返回任何http状态代码。

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

在你的flask代码中,理想情况下,你应该尽可能多地指定MIME类型,以及:

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

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

这里抄袭了Luc的评论,但是要返回一个空白的响应,比如201,最简单的选择是在你的路由中使用下面的返回。

return "", 201

例如:

    @app.route('/database', methods=["PUT"])
    def database():
        update_database(request)
        return "", 201