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

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

from flask import abort
abort(404)

但是201美元我得到了

LookupError: 201没有例外

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


当前回答

如果你在API中使用flask_restful Package 返回201就会变成

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

其中data应该是任何可哈希/ JsonSerialiable值,如dict, string。

其他回答

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

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。

在我的情况下,我必须结合以上的工作,以使其工作

return Response(json.dumps({'Error': 'Error in payload'}), 
status=422, 
mimetype="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/

根据API是如何创建的,通常使用201 (created)返回创建的资源。例如,如果它是创建一个用户帐户,你会这样做:

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

注意,附加的数字是返回的状态代码。

或者,你可能想要发送一个消息给客户端,比如:

return {"msg": "Created Successfully"}, 201

对于404错误,可以这样做

def post():
    #either pass or get error 
    post = Model.query.get_or_404()
    return jsonify(post.to_json())

201的成功

def new_post():
    post = Model.from_json(request.json)
    return jsonify(post.to_json()), 201, \
      {'Location': url_for('api.get_post', id=post.id, _external=True)}