在Flask中捕获http状态代码

时间:2017-08-01 19:53:31

标签: python flask

我最近开始在我的一个项目中使用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)

在终端我得到:

enter image description here

2 个答案:

答案 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浏览器。)