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