我们正在使用Flask开发一个API,我想知道有没有人知道如何返回HTTP 201响应?
对于诸如404这样的错误,我们可以调用:
对于诸如404这样的错误,我们可以调用:
from flask import abort
abort(404)
但是对于201,我得到了
LookupError:没有找到201的异常
我是否需要像文档中所述创建自己的异常?
from flask import abort
abort(404)
但是对于201,我得到了
LookupError:没有找到201的异常
我是否需要像文档中所述创建自己的异常?
您可以使用 Response 返回任何 HTTP 状态码。
> from flask import Response
> return Response("{'a':'b'}", status=201, mimetype='application/json')
return {'a':'b'}, 201, {'Content-Type': 'application/json'}
,或者简单地写成 return {'a': 'b'}, 201
。 - Masood Khaari{'a':'b'}
会自动转换为{"a":"b"}
。双引号是正确的JSON。原始答案实际上返回单引号。 - antun你可以在这里阅读相关信息。
return render_template('page.html'), 201
page.html
文件...... 它本身无法正常工作。 - Chris Stryczynski你可以做
result = {'a': 'b'}
return result, 201
如果你想在响应中返回JSON数据以及错误代码,你可以在这里了解有关响应的信息,并且可以在这里了解make_response API的详细信息
由于缺少在返回语句中建议发送状态代码,如果您将其存储在某些变量中,则如下所示
notfound = 404
invalid = 403
ok = 200
并使用
return xyz, notfound
在处理时间时,请确保其类型为int而不是str。我曾遇到这个小问题,此外,以下是全球使用的状态码列表:http://www.w3.org/Protocols/HTTP/HTRESP.html
希望能有所帮助。
status.NOT_FOUND
。 - roshnetreturn html_page_str, 200, {'ContentType':'text/html'}
return json.dumps({'success':True}), 200, {'ContentType':'application/json'}
...etc
你也可以使用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
在我的情况下,我必须将上述内容结合起来才能使其正常工作。
return Response(json.dumps({'Error': 'Error in payload'}),
status=422,
mimetype="application/json")
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/
时,您会在网络浏览器控制台中收到状态代码201。请注意,保留了HTML标签,没有解释。对于错误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)}