在Python flas中调试请求/响应

2024-04-25 12:26:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新来的python2 flask&;我的任务是漂亮的打印&;保存整个HTTP请求和对文件的响应。我不太明白如何打印/检查请求对象,更不用说响应了。

from flask import Flask, request
app = Flask(__name__)

@app.route('/')
def hi():
    print (request)
    return 'oh hai'

if __name__ == '__main__':
    app.run(debug=True)

有什么建议吗?每个请求/响应应该是一个文件。


Tags: 文件对象namefromimportapphttpflask
1条回答
网友
1楼 · 发布于 2024-04-25 12:26:33

使用after_request

@app.after_request
def after(response):
    # todo with response
    print(response.status)
    print(response.headers)
    print(response.get_data())
    return response

另外,处理before_request请求

@app.before_request
def before():
    # todo with request
    # e.g. print request.headers
    pass

编辑:

response.get_data()可以得到响应的数据。而response是整个响应对象。它可以买到你想要的任何东西。

某些特定url的更新(基于http://s.natalian.org/2016-03-19/foo.py):

    from __future__ import print_function
    from flask import Flask, request, g
    import time
    app = Flask(__name__)             

    @app.route('/')
    def hi():
        g.fn = str(time.time()) + ".txt"
        with open(g.fn,'w') as f:
            print ("Request headers", request.headers, file=f)            
        return 'oh hai'

    @app.route('/foo')
    def foo():
        return 'foo'

    @app.before_request
    def before():
        pass

    @app.after_request
    def after(response):
        fn = g.get('fn', None)
        if fn:
            with open(fn, 'a') as f:
                print("Printing response", file=f)
                print(response.status, file=f)
                print(response.headers, file=f)
                print(response.get_data(), file=f)
        return response

    if __name__ == '__main__':
        app.run(debug=True)

相关问题 更多 >

    热门问题