Flask钩子

98 阅读1分钟

请求扩展

flask请求扩展类似django的请求中间件,又称作钩子方法


before_request

before_request装饰的函数是执行响应函数之前执行,如果有多个before_request他会自上而下按照顺序执行

如果before_request有返回值,那后面的before_request都不会执行,且响应函数也不会执行

一般我们不会定义返回值在这个钩子方法中

@app.before_request
def before_request():
    token = request.headers.get("Authorization")
    if not token:
        abort(401)

after_request

after_request响应函数执行之后触发执行的,前提是这次请求没有触发错误,参数代表着返回的响应对象

@app.after_request
def after_request(response):
    return response

before_first_request

当flask项目启动后的页面请求的第一次才会执行,第二次不会执行。与浏览器无关,执行顺序是从上往下

可以理解为全局第一次的请求钩子方法,在一次服务启动期间,只可使用一次

@app.before_first_request
def before_first_request():
    print("before_first_request")

teardown_request

在每次请求后执行,哪怕出现了错误也会执行,参数代表着抛出的错误

@app.teardown_request
def teardown_request(exception):
    print(exception)