Flask入门笔记-09_中间件or请求钩子

  • 请求钩子, 伴随着整个request的生命周期, 方便开发者对个阶段的请求进行自定义处理, 类似Django的中间件
  • 没什么要说的了,直接上一段可执行的代码
from flask import Flask

app = Flask(__name__)

@app.before_request
def bef_rst():
    # a = 1/0 # 如果不注释这里,每次请求之前都会报错, 但是并不影响teardown_request的调用
    print('每次"请求之前"调用, 一般用于对请求做准备处理, 比如参数校验, 黑名单过滤, 数据统计')

@app.after_request
def after_rst(resp):# 必须设置形参来接受响应对象
    print('每次"请求之后"才会进行调用, 一般用来包装Response对象, 如设置统一的 响应头/响应体')
    print(resp) # 加工响应体
    return resp # 加工完毕 需要返回响应对象

@app.before_first_request
def bef_fir_rst():
    print('网站第一次被访问的时候会调用, 只会调用一次, 一般进行初始化处理, 比如建立数据库连接')

@app.teardown_request
def err_handle(e):
    print('最后调用, 设置一个参数接收异常信息, 无论是否出现异常, 都会调用该钩子, 一般进行收尾工作, 如垃圾回收, 异常统计, 类似Python中的finally,打印一下异常信息: {}'.format(e))




# 创建首页
@app.route('/')
def index():
    return '这里是首页'


if __name__ == '__main__':
    app.run(host='0.0.0.0', port='8000')