我们正在使用Flask作为我们的API之一,我只是想知道是否有人知道如何返回HTTP响应201?
对于404等错误,我们可以致电:
from flask import abort
abort(404)
但是201年我得到了
LookupError:201
没有例外
我是否需要在文档中创建自己的例外this?
答案 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数据以及错误代码 您可以阅读有关响应here和here的信息,以获取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
答案 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