依赖注入
8.1 依赖注入介绍
FastAPI 的依赖注入系统是其核心功能之一,它使得构建应用程序更加模块化、可测试和可维护。依赖注入(Dependency Injection, DI)是一种设计模式,用于实现控制反转(Inversion of Control, IoC),它允许将类或函数的依赖项从外部注入,而不是在内部创建。
FastAPI 使用 Depends 类来声明依赖项。Depends 是一个类,你可以在路径操作函数(或其它依赖项)的参数中使用它来声明需要注入的依赖。
依赖注入的常见应用场景:
- 共享业务逻辑:将多个路由都需要执行的逻辑抽象出来,避免代码重复。
- 共享数据库连接:管理数据库会话的创建、使用和关闭。
- 安全和认证:实现用户身份验证、权限检查和角色要求等。
- 处理请求参数:从请求中提取和验证查询参数、路径参数或请求体
主要优势
- 代码复用:相同的依赖可以在多个路径操作中使用
- 清晰的依赖关系:明确显示每个端点需要什么
- 易于测试:可以轻松地用模拟依赖替换真实依赖
- 自动文档:依赖项会自动包含在 API 文档中
- 错误处理:依赖项中的异常会自动处理
8.2 基本使用
I. 定义依赖的函数逻辑
比如定义一个获取mysql连接对象的函数
II. 在路由匹配中使用
使用Depends类进行依赖注入,将get_db函数注入到一个路由匹配中
每个路由匹配中都会调用都会get_db获取一个数据库连接,数据库操作互不影响
总的来说,依赖注入相当于在执行路由匹配时,会自动执行注入的函数,进而获取该函数返回结果值。