FastAPI 依赖注入系统(一) 简介
作者:麦克煎蛋 出处:https://www.cnblogs.com/mazhiyong/ 转载请保留这段声明,谢谢!
FastAPI有一个强大并且简单易懂的系统:依赖注入系统。
什么是"依赖注入"
"依赖注入"首先意味着在程序中我们的代码可以声明一些它必须依赖的项:我们称之为dependencies,也就是依赖项。
然后,在实际运行中,FastAPI会把所有需要的依赖项提供给你的代码,称之为"注入"依赖项。
"依赖注入"非常适用于以下使用场景:
1、业务逻辑复用
2、共享数据库连接
3、安全机制、权限校验、角色管理等等
4、其他使用场景
所有上述使用场景,借助于"依赖注入"可以明确的提高代码复用,减少代码重复。
接下来我们看一个非常简单的例子,了解下依赖注入系统是怎么工作的。
导入 Depends
from fastapi import Depends, FastAPI
创建依赖项
依赖项实际上是一个函数,它接收所有路径操作函数应当接收的函数参数。
async def common_parameters(q: str = None, skip: int = 0, limit: int = 100): return {"q": q, "skip": skip, "limit": limit}
这里我们可以用async def或者def来声明函数,FastAPI知道怎么来处理。
声明依赖
在路径操作函数的参数中使用Depends
声明依赖,与使用Body、Query等的方式相同。
@app.get("/items/") async def read_items(commons: dict = Depends(common_parameters)): return commons
Depends
仅接收一个函数类型的参数。
调用依赖项
当一个新的请求到来的时候,实际调用流程如下:
1、调用依赖项函数(传递合适的参数)
2、得到依赖项函数的返回结果
3、把返回结果传递给路径操作函数中的对应参数
完整工程实例:
from fastapi import Depends, FastAPI app = FastAPI() async def common_parameters(q: str = None, skip: int = 0, limit: int = 100): return {"q": q, "skip": skip, "limit": limit} @app.get("/items/") async def read_items(commons: dict = Depends(common_parameters)): return commons @app.get("/users/") async def read_users(commons: dict = Depends(common_parameters)): return commons
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2012-06-08 CentOS下配置iptables防火墙
2012-06-08 NSAutoreleasePool自动释放池
2012-06-08 ios中提示信息的实现及自动消失
2012-06-08 文章逐步迁移过来
2012-06-08 什么是Toll-free bridging
2012-06-08 CFArrayRef和NSArray
2012-06-08 ios导航条添加按钮