flask__请求、响应钩子
在每两个组件之间可以使用中间件进行额外的处理一些事情
request
当 flask 应用处理请求时,它会根据从 WSGI 服务器收到的环境创建一个 Request 对象。因为工作者(取决于服务器的线程、进程或协程)一次只能处理一个请求,所以在该请求期间请求数据可被认为是该工作者的全局数据。
请求钩子 before_request
before_request,在每个路由被调用之前都会运行的,用于数据埋点,统计流量,访问次数和验证用户等,这个before_request的钩子函数不能有返回
before_request 如果有了返回值,对应的视图函数就不会执行了,直接返回对应的值
1、情景1,验证用户的 sign
2、验证用户
3、请求时间验证
响应钩子 after_request
after_request,封装响应信息,通常用于路由请求之后想要进行怎样的处理,需要有返回,多用于处理 response,有以下特点:
~ 必须有 response 参数
~ return 的必须是一个 Response 对象
~ 通常用来修改响应
~ 如果程序运行报错( 视图函数出现错误 ),此 after_request 不会被调用
teardown_request
teardown_request,用于释放资源,无论是否视图函数有错误都会调用,可用于数据库的关闭;即在每次请求中总是会执行的
ps:这个函数一定要传参数
before_first_request
before_first_request,服务器启动后初始化数据,用于设置全局变量
g
同一个请求共享数据的,不能跨请求,作用:
~ 验证用户信息
~ 链接数据库
链接数据库的例子
在视图中使用
PS:before-request 如果返回了值,对应的视图函数不会执行了,直接返回对应的值
teardown_request 在每次请求中总是会执行
session
session 可以跨请求,存在服务端
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?