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


141

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

对于诸如404之类的错误,我们可以致电:

from flask import abort
abort(404)

但是对于201我得到

LookupError:201也不例外

我是否需要创建自己的例外,像这样的文档?


18
return '', 201
卢克

Answers:



117

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

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

2
这应该是公认的答案,这是实现它的最佳方法。
LoopsGod

这确实是一个完美的解决方案
Shahriar Rahman Zahin

太好了,永远不要想
阿里安·萨普特拉

26

由于缺乏建议,所以在return语句中发送状态代码,如果您将其存储在某些变量中,例如

notfound = 404
invalid = 403
ok = 200

和使用

return xyz, notfound

一定要确保其类型为int not str。当我遇到这个小问题时,这也是状态代码列表,在全球范围内 http://www.w3.org/Protocols/HTTP/HTRESP.html

希望能帮助到你。


17

你可以做

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

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


5

理想情况下,在烧瓶代码中,还应尽可能频繁地指定MIME类型:

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

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

...等等



1

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

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

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

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

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

0

就我而言,我必须将上述内容组合在一起才能使其正常工作

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

0

因此,如果您使用flask_restfulAPI的Package ,则返回201会像

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

哪里data应该是任何hashable / JsonSerialiable值,例如dict,string。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.