我最近开始在我的一个项目中使用Flask通过简单的路线提供数据。到目前为止,我返回一个包含数据和其他信息的json文件。运行我的Flask应用程序时,我在终端中看到此请求的状态代码。我想将状态代码作为最终json文件的一部分返回。是否有可能捕获我在终端中看到的相同代码?
有些简单可能看起来像这样
from flask import Flask
from flask import jsonify
app = Flask(__name__)
@app.route('/test/<int1>/<int2>/')
def test(int1,int2):
int_sum = int1 + int2
return jsonify({"result":int_sum})
if __name__ == '__main__':
app.run(port=8082)
在终端我得到:
答案 0 :(得分:4)
您是谁设置响应代码(默认情况下成功响应为200),您无法在响应发出之前捕获此值。但是如果你知道你的操作结果,你可以把它放在最后的json上。
@app.route('/test/<int1>/<int2>/')
def test(int1, int2):
int_sum = int1 + int2
response_data = {
"result": int_sum,
"sucess": True,
"status_code": 200
}
# make sure the status_code on your json and on the return match.
return jsonify(response_data), 200 # <- the status_code displayed code on console
顺便说一下,如果从请求库访问此端点,则可以在响应对象上找到status_code和所有http引用数据以及所需的json。
Python请求库示例
import requests
req = requests.get('your.domain/test/3/3')
print req.url # your.domain/test/3/3
print req.status_code # 200
print req.json() # {u'result': 6, u'status_code: 200, u'success': True}
答案 1 :(得分:2)
您可以发送HTTP状态代码,如下所示:
@app.route('/test')
def test():
status_code = 200
return jsonify({'name': 'Nabin Khadka'}, status_code) # Notice second element of the return tuple(return)
这样您就可以控制返回客户端的状态代码(通常是Web浏览器。)