flask截获请求访问之before_request修饰器

flask截获所有请求访问。

即在所有请求进入app.route装饰的函数前先被处理一次。

from flask import Flask, jsonify

app = Flask(__name__)


@app.before_request 
def before_request(): 
    ip = request.remote_addr  # 客户端IP
    url = request.url 
    print(ip)
    print(url)


@app.route('/api/test', methods=['POST'])
def test():
    return jsonify({'a': 1, 'b': 2})


if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0', port=6666)

before_request()函数被app.before_request修饰以后,每一次请求到来后,都会先进入函数before_request()中。

如上代码,获取请求的ip以及url,并打印出来,执行完毕后请求才会正常进入到app.route修饰的函数中响应。

如果有多个函数被app.before_request修饰了,那么这些函数会被依次执行。

app.before_request修饰器在开发中用处非常大,比如判断某个ip是否有恶意访问行为,从而进行拦截等操作。

同理,app.after_request修饰器,在用户请求得到函数响应后被执行。

需要注意的是这个执行是在函数返回数据给client之前被调用(做一些其他收尾工作),即请求已经被app.route修饰的函数响应过了,已经形成了response,但还未返回给用户的时调用的。

以上。

原文:https://www.jb51.net/article/133139.htm

原文地址:https://www.cnblogs.com/lovebkj/p/12794550.html