当前位置: 首页 > article >正文

一周学会Flask3 Python Web开发-request请求钩子(Hook)

锋哥原创的Flask3  Python Web开发 Flask3视频教程:

2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili

有时候我们业务需求对请求做一些鉴权,日志,统计分析等功能,这时候可以对请求进行预处理( preprocessing )和后处理( postprocessing ),这时可以使用Flask提供的一些请求钩子( Hook),它们可以用来注册在请求处理的不同阶段执行的处理函数(或称为回调函数,即 Callback)。这些请求钩子使用装饰器实现,通过程序实例app调用。Flask3默认实现的三种请求钩子如下所示。

钩子说明
before_request注册一个函数,在处理每个请求前运行
after_request注册一个函数,如果没有未处理的异常抛出,会在每个请求结束后运行
teardown_request注册一个函数,即使有未处理的异常抛出,会在每个请求结束后运行。如果发生异常,会传入异常对象作为参数到注册的函数中

下面是一个测试示例:


@app.route('/test_hook')
def test_hook():
    print('do something...')
    # a = 1 / 0
    return 'ok'


@app.before_request
def do_something_before():
    print('before_request', request.url)


@app.after_request
def do_something_after(response):
    print('after_request', request.url)
    return response


@app.teardown_request
def do_somethin_teardown(exception):
    print('teardown_request', exception, request.url)

控制台打印:

before_request http://127.0.0.1:5000/test_hook
do something...
after_request http://127.0.0.1:5000/test_hook
teardown_request None http://127.0.0.1:5000/test_hook

http://www.kler.cn/a/552947.html

相关文章:

  • Qt之多线程处理
  • Netty:高并发网络编程的核心框架
  • JVM类文件结构深度解析:跨平台基石与字节码探秘
  • 深度学习-118-Text2SQL之基于langchain和LLM将问题文本转化成SQL语句和答案
  • 《天津大学DeepSeek原理与效应》.pdf(文末有完整版下载地址)
  • leetcode刷题-动态规划06
  • 23种设计模式 - 空对象模式
  • 使用 ollama 在 windows 系统本地部署 deepseek r1 模型
  • 深入解析 Flutter GetX
  • Redis 客户端C++使用
  • GoFound 与 MySQL 集成优化方案
  • 寒假总结与心得
  • 侯捷 C++ 课程学习笔记:设计模式在面向对象开发中的应用
  • Python 爬虫入门:从基础到实战
  • 修改项目的一些前端记录(自用)
  • MySQL-慢SQL解析及调试分析思路
  • 可变列二维数组【C语言】
  • 内网常见问题处理
  • java数据结构_优先级队列(堆)_6.1
  • 开源元搜索引擎SearXNG:使用Docker详细搭建部署与使用