什么是中间件
- 就是一个函数,它在被任何特定路径操作处理之前处理每个请求,且在每个 response 返回之前被调用
- 类似钩子函数
执行顺序
- 中间件会接收应用程序中的每个请求 Request
- 针对请求 Request 或其他功能,可以自定义代码块
- 再将请求 Request 传回路径操作函数,由应用程序的其余部分继续处理该请求
- 路径操作函数处理完后,中间件会获取到应用程序生成的响应 Response
- 中间件可以针对响应 Response 或其他功能,又可以自定义代码块
- 最后返回响应 Response 给客户端
Request
FastAPI 有提供 Request 模块,但其实就是 starlette 里面的 Request
Response
FastAPI 有提供 Response 模块,但其实就是 starlette 里面的 Response
中间件和包含 yield 的依赖项、Background task 的执行顺序
- 依赖项 yield 语句前的代码块
- 中间件
- 依赖项 yield 语句后的代码块
- Background task
创建中间件
import time
from fastapi import F