zoukankan      html  css  js  c++  java
  • 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()
    

      

  • 相关阅读:
    【react native】有关入坑3个月RN的心路历程
    【react-native】持续踩坑总结
    【react native】rn踩坑实践——从输入框“们”开始
    【CSS】少年,你想拥有写轮眼么?
    【杂谈】小记一个ios11的bug
    基于MATLAB&摄像头的实时目标跟踪
    WebRTC 音频模块单独编译 --【转载】
    高斯分布--转载
    win 7 64位 下 VMware Ubantu 14.04 设置共享文件夹失败
    GMM算法
  • 原文地址:https://www.cnblogs.com/wwr3569/p/13735900.html
Copyright © 2011-2022 走看看