10.Flask 中请求钩子的理解和应用

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

1.在请求开始时,建立数据库连接;

2.在请求开始时,根据需求进行权限校验;

3.在请求结束时,指定数据的交互格式;

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

 

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

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

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

案例:

@api.after_request
def after_request(response):
"""设置默认的响应报文格式为 application/json"""
	# 如果响应报文 response 的 Content-Type 是以 text 开头,则将其改为
	# 默认的 json 类型
	if response.headers.get("Content-Type").startswith("text"):
		response.headers["Content-Type"] = "application/json"
	return respon

猜你喜欢

转载自blog.csdn.net/carl95271/article/details/89279523