构建FastAPI项目的最佳实践是什么? [英] What are the best practices for structuring a FastAPI project?

查看:0
本文介绍了构建FastAPI项目的最佳实践是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要解决的问题:

  • 目录的好名称,以便它们的用途明确。
  • 将所有项目文件(包括Viralenv)保存在一个位置,因此我 可以轻松地复制、移动、存档、删除整个项目或估算磁盘 空间使用率。
  • 创建某些选定文件集的多个副本,例如整个 应用程序、存储库或虚拟环境,同时保留 我不想克隆的其他文件。
  • 只需通过rsyncing将正确的文件集部署到服务器 选择了一个目录。
  • 很好地处理了前端和后端。

推荐答案

哈莎已经提到了我的project generator,但我认为它可以帮助未来的读者解释它背后的想法。

如果您要为您的前端提供服务,请使用纱线NPM之类的服务。你不应该担心他们之间的结构。使用类似axios或Java脚本的FETCH之类的东西,您可以轻松地从任何地方与您的后端进行对话。

说到构建后端,如果你想用JJJA呈现模板,你可以有一些接近MVC模式的东西。

your_project
├── __init__.py
├── main.py
├── core
│   ├── models
│   │   ├── database.py
│   │   └── __init__.py
│   ├── schemas
│   │   ├── __init__.py
│   │   └── schema.py
│   └── settings.py
├── tests
│   ├── __init__.py
│   └── v1
│       ├── __init__.py
│       └── test_v1.py
└── v1
    ├── api.py
    ├── endpoints
    │   ├── endpoint.py
    │   └── __init__.py
    └── __init__.py 

通过随处使用__init__,我们可以像Django一样从整个应用程序访问变量。

让我们将文件夹分成几个部分:

  • 核心
    • 型号
      • datase.py
    • 架构
      • users.py
      • 某物.py
    • settings.py
    • 视图(如果要呈现模板,请添加此选项)
      • v1_views.py
      • v2_views.py
  • 测试
  • v1
  • v2

型号

它适用于您的数据库模型,通过执行此操作,您可以从v1和v2导入相同的数据库会话或对象。

架构

架构是您的PYDANIC模型,我们之所以称其为架构,是因为它实际上用于创建OpenAPI架构,因为FastAPI基于OpenAPI规范,我们在任何地方都使用架构,从Swagger生成到终结点的预期请求正文。

settings.py

它适用于Pydantic's Settings Management,它非常有用,您可以使用相同的变量而无需重新声明它,以了解它如何对您有用Settings and Environment Variables

视图

这是可选的,如果你打算用JJJA渲染你的前端,你可以有接近MVC模式的东西

  • 核心
    • 视图
      • v1_views.py
      • v2_views.py

如果要添加视图,则如下所示。

测试

最好将测试放在后端文件夹中。

接口

通过APIRout独立创建它们,而不是将您的所有API收集到一个文件中。

备注

您可以对所有导入使用绝对导入,因为我们在任何地方都使用__init__,请参阅Python's packaging文档。

因此假设您正在尝试从v2导入v1的endpoint t.py,您只需执行

from my_project.v1.endpoints.endpoint import something

这篇关于构建FastAPI项目的最佳实践是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆