• Python-Flask-请求钩子


    """
    在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如:
    ·在请求开始时,建立数据库连接
    ·在请求开始时,根据需求进行权限校验
    ·在请求结束时,制指定数据的交互格式

    为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子。
    请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子

    ·before_first_request
    在处理第一个请求前执行

    ·before_request
    在每次请求前执行
    如果在某修饰的函数中返回了一个响应,视图函数将不再被调用

    ·after_request
    如果没有抛出错误,在每次请求后执行
    接受一个参数:视图函数做出的响应
    在此函数中可以对响应值在返回之前做最后一步修改处理
    需要将参数中的响应在此参数中进行返回

    ·teardown_request
    在每次请求后执行
    接受一个参数:错误信息,如果有,相关错误抛出
    """
    from urllib import response

    from flask import Flask

    app = Flask(__name__)

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

    @app.before_request
    def before_request():
    print('before_request')
    #可以对一些非法的请求进行阻止

    @app.after_request
    def after_request(response):
    print('after_request')
    return response #这里返回的response就是下面视图函数返回的响应
    #在请求之后会调用,并且函数里面接受一个参数:响应。还需要将响应进行返回


    @app.teardown_request
    def teardown_requst(error):
    print('teardown_request')
    # 在请求之后会执行,如果请求的函数报有异常,会把具体异常传入到此函数

    @app.route('/')
    def index():
    return 'index'

    if __name__ == '__main__':
    app.run(debug=True)

  • 相关阅读:
    mysql数据库操作
    django
    django-rest framwork
    Maven项目POM文件错误,提示“Plugin execution not covered by lifecycle configuration”的解决方案
    [Flutter] FFI之生成Ansi字符串指针
    多label实现准确率和召回率
    pickle.dump()和pickle.load()
    numpy.take()
    通俗易懂的lambda表达式,不懂来找我!
    collections(python常用内建模块)
  • 原文地址:https://www.cnblogs.com/wf8998/p/13293511.html
Copyright © 2020-2023  润新知