rest - 用于多个应用程序和数据库连接的烧瓶应用程序结构
问题描述
虽然是 Web 开发的初学者,但我目前一直在开发一个更大的 Flask 应用程序。
目前我正在使用下面显示的结构,但我想知道构建这样一个应用程序的最佳方法是什么,特别是关于不同的数据库连接(SQLAlchemy)。
与通常(并且非常有用)的 Flask 教程中显示的不同,我设想了一个由多个部分独立(子)应用程序组成的架构,每个应用程序也依赖于自己的数据库连接。此外,我不一定要在访问主网站时立即加载所有数据库,而只需要加载所需的子应用程序之一。
对于服务器和客户端之间的通信,我计划使用 REST API,并且我已经使用蓝图来分隔子应用程序。
该应用程序有一个统一的前端,子应用程序被简单地映射到不同的 URL 端点(例如 website.net/app1 和 website.net/app2)。
非常感谢任何有关构建此类应用程序的指导,谢谢!
当前应用结构:
project/
├─ run.py
├─ webapp/
│ ├─ __init__.py
│ ├─ static/
│ ├─ templates/
│ ├─ app1/
│ │ ├─ data/
│ │ │ ├─ app1_database.py
│ │ │ ├─ app1_db_session.py
│ │ │ ├─ app1_modelbase.py
│ │ ├─ database/
│ │ ├─ services/
│ │ │ ├─ app1_services.py
│ │ ├─ templates/
│ │ │ ├─ app1/
│ │ │ │ ├─ app1.html
│ │ ├─ __init__.py
│ │ ├─ app1_forms.py
│ │ ├─ app1_views.py
│ ├─ app2/
│ │ ├─ data/
│ │ │ ├─ app2_database.py
│ │ │ ├─ app2_db_session.py
│ │ │ ├─ app2_modelbase.py
│ │ ├─ database/
│ │ ├─ services/
│ │ │ ├─ app2_services.py
│ │ ├─ templates/
│ │ │ ├─ app2/
│ │ │ │ ├─ app2.html
│ │ ├─ __init__.py
│ │ ├─ app2_forms.py
│ │ ├─ app2_views.py
解决方案
当我们谈论模块和目录结构时,主要目标是以一种易于维护、调试和改进的方式编写应用程序。我认为,如果您在一个项目中有多个应用程序,最好将每个应用程序放在不同的服务器上。当我们想在单个应用程序中分离逻辑时,尤其是当我们计划在不同的应用程序中重用此逻辑时,我们通常使用蓝图。所以我们可以将单个蓝图复制粘贴到另一个项目中。例如身份验证蓝图。它可以在多个应用程序中相同。您没有显示应用程序的任何业务逻辑。所以很难说。考虑到业务逻辑,我通常将文件放入目录中。
推荐阅读
- python - 带有发布请求的龙卷风反向 url
- java - Android studio3.1.3-Windows 10 中的 Gradle 项目同步失败
- speech-to-text - 使用 Speech to Text 免费层的限制
- python - 为什么 scikit-learn 中的参数搜索不需要 scorer 导入?
- python - gdb.execute 阻塞 python 脚本中的所有线程
- javascript - Vue 将值从创意 div 传递到新的 Vue 组件
- r - 不带小数的 R 百分比标签
- javascript - TestCafe - 选择选项
- c - 无法在 MAC 终端上执行二进制文件
- python - 我刚刚记录的最差级别的日志是什么?