2017-08-01 115 views
0

我最近开始在我的一个项目中使用Flask来通过简单的路由提供数据。到目前为止,我返回一个包含数据和其他信息的json文件。运行我的Flask应用程序时,我在终端中看到了这个请求的状态码。我想返回状态代码作为我的最终json文件的一部分。是否有可能捕获我在终端中看到的相同代码?在Flask中捕获htttp-status代码

一些简单的看起来可能是这样

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) 

而在终端,我得到:

enter image description here

回答

2

你是谁设置了响应码(成功响应时默认设置为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 refered数据,再加上你所需要的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

您可以发送HTTP状态代码如下:

@app.route('/test') 
def test(): 
    status_code = 200 
    return jsonify({'name': 'Nabin Khadka'}, status_code # Notice second element of the return tuple 

这样你可以控制什么状态码返回到客户端(通常是网页浏览器)。