依赖注入
依赖注入是 FastAPI 的核心能力。
它解决的问题是:多个接口都需要同一段公共逻辑时,不要到处复制。
常见公共逻辑:
- 读取分页参数
- 获取数据库连接
- 获取当前登录用户
- 校验 Token
- 读取配置
一、最简单的 Depends
访问 /items/ 时,FastAPI 会先执行 common_params(),再把返回值传给 params。
二、依赖函数也可以接收请求参数
分页参数经常在多个接口里重复出现。
访问:
返回:
三、依赖可以依赖另一个依赖
比如先读取 Token,再根据 Token 查用户。
路由里使用:
调用时带请求头:
四、yield 依赖
有些资源需要“使用前创建,使用后关闭”,例如数据库会话。
这类依赖用 yield:
执行顺序:
路由中使用:
这里的 SessionLocal 来自 SQLAlchemy 配置。数据库部分可以继续看 SQLAlchemy 教程。
五、在 APIRouter 上设置依赖
如果一组接口都需要登录,可以把依赖放到路由上。
这样访问 /admin/dashboard 时,也会先执行 get_current_user()。
如果路由函数里还需要拿到当前用户对象,就把依赖写到参数上:
六、依赖的缓存
同一个请求里,同一个依赖默认只会执行一次。
如果一个接口里多个地方都依赖它,FastAPI 会复用结果。
大多数时候这是你想要的行为。只有非常少的场景才需要关闭缓存。
七、什么时候使用依赖注入
适合放进依赖的逻辑:
依赖注入不是为了把所有代码都变复杂,而是为了让公共逻辑复用得更自然。

