我应该如何在大型Python应用程序中构建模块?

问题描述 投票:0回答:1

我经常用Python和FastAPI一起编写和参与Web应用程序的开发。我总是使用相同的文件夹结构,如下所示:

我觉得名字一目了然,知道里面分别是什么。但我想重点关注两个文件夹:api 和 services。 api 内是具有应用程序端点的所有模块(每个“实体”一个模块,例如在模块 api/routers/users.py 中将是用户的所有端点。在这些端点中没有复杂的逻辑,所有逻辑都在“services”文件夹中。因此,在模块 services/users.py 中,将有一个名为 User 的完整类,其中包含逻辑。在许多情况下,该类只是一个从 CRUD 继承的 CRUD,并且不甚至不扩展该类,或者添加一两个以上的方法。 然而,在某些情况下,“实体”需要更复杂的逻辑,适合实现一些设计模式、接口等。当发生这种情况时,我因必须将所有内容都放在 services/users.py 模块中而感到不知所措。 (这意味着一个非常大的文件)。我什至看到其他开发人员如何继续使用许多与该类无关的方法来扩展 User 类(这只是一个示例,它可以是任何东西),从而使代码过于耦合且内聚性低。 作为解决方案,我考虑为每个实体而不是模块创建一个文件夹。那么它将是服务/用户,并且如果需要的话,所有用户逻辑都分布在多个模块中。 但我不确定我在设计方面做得是否正确。我是不是让事情变得更复杂了?或者这是一个正确的策略?

python design-patterns backend fastapi api-design
1个回答
0
投票

我认为你应该尝试一些使用

Django
django-rest-framework
的设计方法。

您将把您的应用程序分成小应用程序。使用路由器模块将 URL 映射到特定应用程序。然后在每个应用程序中,将有单独的

models
services
serializers
views
。另外,常用的脚本/控制器可以放在
src
文件夹中。

如果您熟悉 OOP,这种编码方法非常有效(我总是建议在大型项目中使用 OOP)。

© www.soinside.com 2019 - 2024. All rights reserved.