fastapi 类依赖注入
时间: 2024-09-15 18:15:08 浏览: 92
FastAPI 框架精讲
5星 · 资源好评率100%
FastAPI是一个轻量级的Web框架,它支持Python的依赖注入(DI)功能,使得类之间的依赖关系能够更方便地管理。依赖注入允许你在创建应用实例时传递依赖服务,而不是在类内部硬编码。在FastAPI中,你可以通过将依赖项作为构造函数参数传入,或者使用`Depends`装饰器来标记依赖。
例如,假设你有一个数据库连接类`DBConnection`,在需要它的服务如`UserService`中:
```python
from fastapi import FastAPI
from sqlalchemy.orm import Session
class DBConnection:
def __init__(self, db: Session):
self.db = db
class UserService:
def __init__(self, db: DBConnection):
self.db_connection = db
app = FastAPI()
# 使用构造函数注入
@app.on_event("startup")
async def startup():
db = await get_db() # 获取数据库连接
app.dependency_overrides[DBConnection] = lambda: DBConnection(db)
# 或者使用Depends装饰器
@app.get("/users", dependencies=[Depends(get_db)])
async def get_users(user_service: UserService):
return user_service.get_users()
```
在这个例子中,`get_db`是一个辅助函数用于获取数据库连接。`Depends(get_db)`会自动处理连接并在每次请求时创建一个新的`DBConnection`实例。
阅读全文