我将服务定义为提供 DRY 方法的类,可以从代码中的任何地方调用。
我的 FastAPI 控制器有一个端点:
@router.get("/health")
async def health_check():
return {"status": "pass"}
我想将其更新为
return MyHelper().get_health_status
,其中MyHelper
在./services/my_helper.py
中定义。这里的标准方法是什么?
理想情况下,我想像在.NET core中那样使用依赖注入,其过程大致是:
Startup.cs
文件。services.AddSingleton<IMyHelper, MyHelper>();
在 FastAPI 项目中处理此问题的最佳方法是什么?是否内置了 DI 或应该使用什么第三方库?如果没有内置 DI,我该如何注册我的服务,这样我至少可以在路由器(“控制器”)文件中实例化它?
附言我正在阅读What is a Pythonic way for Dependency Injection?,但我仍然想知道在专门使用 FastAPI 时是否有偏好。同样,考虑到 REST API 基本上是如何内置到 .NET Core 中的,并且有一种“标准”方式(这不仅仅是实例化帮助类)。