在烧瓶中返回HTTP状态代码201

时间:2011-10-19 15:48:14

标签: python flask httpresponse

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

对于404等错误,我们可以致电:

from flask import abort
abort(404)

但是201年我得到了

  

LookupError:201

没有例外

我是否需要在文档中创建自己的例外this

11 个答案:

答案 0 :(得分:112)

您可以阅读here.

return render_template('page.html'), 201

答案 1 :(得分:53)

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

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

答案 2 :(得分:19)

由于在return语句中缺少建议的发送状态代码 如果你将它存储在某些变量中,比如

notfound = 404
invalid = 403
ok = 200

并使用

return xyz, notfound

比确保其类型为int而不是str。因为我遇到了这个小问题 这里也是全球遵循的状态代码列表 http://www.w3.org/Protocols/HTTP/HTRESP.html

希望它有所帮助。

答案 3 :(得分:3)

您可以

from flask import make_response

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

如果您想在响应中返回JSON数据以及错误代码 您可以阅读有关响应herehere的信息,以获取make_response API的详细信息

答案 4 :(得分:2)

在烧录代码中,理想情况下应尽可能经常指定MIME类型:

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

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

...等

答案 5 :(得分:1)

删除 Luc's comment here,但要返回空白响应,例如 201,最简单的选择是在您的路由中使用以下返回。

return "", 201

例如:

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

答案 6 :(得分:1)

对于错误 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)}

答案 7 :(得分:0)

就我而言,我必须将上述内容结合起来才能使其起作用

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

答案 8 :(得分:0)

您还可以使用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/

答案 9 :(得分:0)

因此,如果您使用的是 flask_restful API包 返回201会变成

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

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

答案 10 :(得分:0)

取决于API的创建方式,通常返回201(创建),您将返回创建的资源。例如,如果它正在创建一个用户帐户,您将执行以下操作:

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

请注意,后缀数字是返回的状态码。

或者,您可能希望向客户端发送一条消息,例如:

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