这一部分讲解 FastAPI 依赖注入机制,包括全局依赖、局部依赖及多层依赖的使用。
依赖注入(Dependency Injection,简称 DI)是一种设计模式,它允许我们将对象的依赖关系从对象本身的创建和管理中分离出来。在 FastAPI 中,依赖注入用于将一些通用的逻辑(如身份验证、数据库连接等)封装到独立的函数中,然后在路径操作函数中使用这些依赖项。
from fastapi import FastAPI
from fastapi import Depends
import uvicorn
# 1. 全局依赖注入,每次请求都会执行依赖的可调用对象
def global_dependency1():
print('全局依赖注入1')
def global_dependency2():
print('全局依赖注入2')
app = FastAPI(dependencies=[Depends(global_dependency1), Depends(global_dependency2)])
# 2. 局部依赖注入,只有执行该请求时才会执行依赖可调用对象
# 2.1 函数作为依赖项
async def get_config():
return {'c1': 10, 'c2': 20}
@app.post('/demo01')
async def demo01(param : dict = Depends(get_config)):
return {'param': param}
# 2.2 类作为依赖项
class Config:
def __init__(self):
self.c1 = 10
self.c2 = 20
@app.post('/demo02')
async def demo02(param : Config = Depends()):
param.c1 = 100
param.c2 = 200
return {'param': param}
# 2.3 多层依赖项
async def get_dependency01():
return {'c1': 1000, 'c2': 2000}
async def get_dependency02(param : dict = Depends(get_dependency01)):
return param
@app.post('/demo03')
async def demo03(param : dict = Depends(get_dependency02)):
return {'param': param}
if __name__ == '__main__':
uvicorn.run(app, host='127.0.0.1', port=8000)



冀公网安备13050302001966号