博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
请求钩子
阅读量:3960 次
发布时间:2019-05-24

本文共 1319 字,大约阅读时间需要 4 分钟。

请求钩子

在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如:

  • 在请求开始时,建立数据库连接;
  • 在请求开始时,根据需求进行权限校验;
  • 在请求结束时,指定数据的交互格式;

为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子。

请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子:

before_first_request	在处理第一个请求前执行
before_request	在每次请求前执行	如果在某修饰的函数中返回了一个响应,视图函数将不再被调用
after_request	如果没有抛出错误,在每次请求后执行	接受一个参数:视图函数作出的响应	在此函数中可以对响应值在返回之前做最后一步修改处理	需要将参数中的响应在此参数中进行返回
teardown_request:	在每次请求后执行	接受一个参数:错误信息,如果有相关错误抛出

代码测试

from flask import Flaskfrom flask import abortapp = Flask(__name__)# 在第一次请求之前调用,可以在此方法内部做一些初始化操作@app.before_first_requestdef before_first_request():    print("before_first_request")# 在每一次请求之前调用,这时候已经有请求了,可能在这个方法里面做请求的校验# 如果请求的校验不成功,可以直接在此方法中进行响应,直接return之后那么就不会执行视图函数@app.before_requestdef before_request():    print("before_request")    # if 请求不符合条件:    #     return "laowang"# 在执行完视图函数之后会调用,并且会把视图函数所生成的响应传入,可以在此方法中对响应做最后一步统一的处理@app.after_requestdef after_request(response):    print("after_request")    response.headers["Content-Type"] = "application/json"    return response# 请每一次请求之后都会调用,会接受一个参数,参数是服务器出现的错误信息@app.teardown_requestdef teardown_request(e):    print("teardown_request")@app.route('/')def index():    return 'index'if __name__ == '__main__':    app.run(debug=True)
  • 在第一次请求的打印结果:
before_first_requestbefore_requestafter_requestteardown_request
  • 在第二次请求打印结果:
before_requestafter_requestteardown_request

转载地址:http://bpezi.baihongyu.com/

你可能感兴趣的文章
[无线] AndroidManifest.xml配置文件详解
查看>>
[移动] Mosquitto简要教程(安装/使用/测试)
查看>>
[HTML5] 关于HTML5(WebGL)的那点事
查看>>
自我反思
查看>>
初识网络编程
查看>>
东北赛选拔教训
查看>>
hash
查看>>
涨姿势了:求两个分子的最大公倍数
查看>>
快速幂
查看>>
vector.reserve and resize &&vector与map结合
查看>>
最长公共子序列
查看>>
计算几何
查看>>
求解方程
查看>>
太弱了。。水题
查看>>
位运算(含应用)
查看>>
野指针与空指针
查看>>
图文混排效果
查看>>
urllib2.urlopen超时问题
查看>>
魏兴国:深入浅出DDoS攻击防御
查看>>
使连续的参考文献能够中间用破折号连起来
查看>>