我不明白使用FastAPI时依赖注入的意义,比如看看这段代码
utils/getInfo.py
def getInfo():
from app import UserModel
from app import PostModel
from app import CommentModel
from app import Session
class Models:
User = UserModel
Post = PostModel
Comment = CommentModel
return (Session, Models)
路由器/somerouter.py
from controllers.somecontroller import route
@router.post("/someroute")
async def handleRoute():
return await route()
控制器/somecontroller.py
from utils.getInfo import getInfo
async def route(databaseInfo: tuple = getInfo):
Session, Models = getInfo
return {"msg": "Route"}
依赖注入在哪里可以让事情变得更容易?怎么样比较好呢?我看到很多 FastAPI 的代码示例都使用它。因此,在让整个 API 使用这种方法之前,我想知道是否应该切换以及原因。因为当前的设置有效。
来自文档:
使用依赖注入系统,您还可以告诉FastAPI您的路径操作函数还“依赖于”应在路径操作函数之前执行的其他内容,FastAPI将负责执行它并“注入”结果。
使用您的设置,只有进入
route()
后,您才会获得 handleRoute()
函数的结果。而使用依赖注入,您可以在进入handleRoute()
之前访问它们。
一个例子是身份验证和授权。您希望在进入路线之前执行此操作。使用您的设置,您最终只会点击身份验证/授权。