大家好,我是Java1234_小锋老师,最近更新《2027版 一天学会 FastAPI Python  web开发 视频教程(无废话版)》专辑,感谢大家支持。

本课程主要介绍和讲解FastAPI简介,HelloWorld实现,自动生成交互式API文档,路径参数,查询参数,请求体,参数校验,响应模型  ,表单数据和模型,中间件 ,依赖注入,集成SQLAlchemy ORM  操作数据库,集成Pydantic数据校验等

视频教程+课件+源码打包下载:

链接:https://pan.baidu.com/s/1_NzaNr0Wln6kv1rdiQnUTg
提取码:0000

依赖注入

什么是依赖注入

依赖注入(Dependency Injection, DI)是一种设计模式,核心思想是将对象的创建与使用分离,通过外部注入的方式为组件提供所需的依赖,而不是在组件内部直接实例化。

在 FastAPI 中,依赖注入系统让你可以在路径操作函数中声明自己需要什么资源(如数据库连接、用户认证、配置等),FastAPI 框架会自动准备这些资源并“注入”到你的函数中。


为什么使用依赖注入

优势说明
代码复用将通用逻辑(如认证、数据库连接)抽取为可复用的依赖,避免重复代码
解耦业务逻辑与基础设施(数据库、外部服务)分离,降低组件间的耦合度
简化测试测试时可以轻松 Mock 依赖项,隔离被测代码,无需实际连接数据库或调用外部服务
类型安全结合 Python 类型注解,支持 IDE 静态检查,避免运行时类型错误
自动文档依赖参数会自动出现在 Swagger API 文档中

核心概念

1. Depends - 依赖注入的关键

FastAPI 通过 Depends 实现依赖注入。你定义一个依赖函数(可以是普通函数或异步函数),然后在路径操作函数的参数中使用 Depends(依赖函数) 来注入。

2. 依赖函数

依赖函数和普通的路径操作函数几乎一样——它可以接收路径参数、查询参数、请求体等,也可以使用 async/await。它的返回值会作为参数传递给路径操作函数。

我们来看一个实例,定义一个公共分页方法 common_parameters,其他地方可以通过Depends注入。

async def common_parameters(
        q: str | None = None,
        skip: int = 0,
        limit: int = 100):
    return {"q": q, "skip": skip, "limit": limit}
​
​
@app.get("/items/")
async def read_items(commons: Annotated[dict, Depends(common_parameters)]):
    return commons
​
​
@app.get("/users/")
async def read_users():
    return "users info !"

浏览器请求:http://127.0.0.1:8000/docs,测试下哈。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐