• flask中请求钩子介绍


    请求钩子作用

    请求钩子可以对请求的各个阶段进行监听,方便开发者针对请求完成一些统一处理,以便减少重复代码,作用类比Django中的中间件

    开发中主要会用到以下四种请求钩子:

    before_request
    每次执行视图函数之前调用
    对请求进行一些准备处理
    如果在该函数中返回了一个响应,视图函数将不再被调用
    after_request
    如果没有抛出错误,每次执行视图函数之后(已经包装为响应对象)调用
    在此函数中可以对响应值在返回之前做最后一步修改处理
    接受一个参数:包装好的响应对象
    需要将修改后的响应对象返回
    before_first_request
    web应用被第一次请求前调用
    可以进行web应用初始化处理
    teardown_request:
    每次执行视图函数之后调用
    无论是否出现异常都会执行, 一般用于请求收尾
    接受一个参数:错误信息,如果有相关错误抛出

     
    
    from flask import Flask, Response
    
    
    # 请求钩子: 类比django中间件 ,请求钩子可以对请求的各阶段进行监听, 方便开发者针对请求完成一些统一的处理
    app = Flask(__name__)
    
    
    # 每次执行视图函数之前调用, 对请求进行一些准备处理, 如参数解析, 黑名单过滤, 数据统计等
    @app.before_request
    def prepare():
    print('before_request')
    
    
    # 每次执行视图函数之后(已经包装为响应对象)调用, 对响应进行一些加工处理, 如设置统一响应头, 设置数据的外层包装
    @app.after_request
    def process(response:Response): # 必须定义形参接收响应对象
    print('after_request')
    
    请求钩子可以通过两种方式进行添加, 装饰器形式 或者 直接方法调用
    from flask import Flask, Response
    
    
    app = Flask(__name__)
    
    
    # 每次执行视图函数之前调用
    # @app.before_request
    # def prepare():
    # print('before_request')
    
    # 另一种语法
    def prepare():
    print('before_request')
    
    app.before_request(prepare)
    
    
    @app.route('/')
    def index():
    print('执行视图')
    a = 1 / 0
    return "index"
    
    
    if __name__ == '__main__':
      app.run()
    

      

  • 相关阅读:
    Bellman-Ford(BF)和Floyd算法
    Dijkstra实现最短路径
    【图论】连通分量个数(并查集)
    【模拟】n a^o7 !
    【图论】最小生成树
    【搜索DFS】图的深度遍历(dfs)
    【搜索BFS】poj3278--Catch That Cow(bfs)
    【图论】判断给定图是否存在合法拓扑序列
    二叉排序树
    【树】判断给定森林中有多少棵树(简单做法)
  • 原文地址:https://www.cnblogs.com/wwr3569/p/13735900.html
Copyright © 2020-2023  润新知