You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.6 KiB
2.6 KiB
架构
iTi-Flask 是框架基座。 它提供后端项目的通用工程能力,不内置具体业务。
包定位
框架负责:
- 应用工厂。
- 配置加载。
- APIFlask 集成。
- SQLAlchemy 和 Flask-Migrate 初始化。
- JWT、缓存、限流、日志、错误处理。
- 模块注册协议。
- HTTP JSON 服务客户端。
- 单进程任务运行器。
- Copier 业务项目模板。
- 可选 SPA 静态目录承载。
- 默认 HTML 错误页。
框架不负责:
- 系统业务。
- 业务表和业务路由。
- 业务 seed。
- 业务前端构建产物。
需要系统业务时,业务项目额外依赖 iTi-System。
应用创建流程
create_app() 会按顺序完成这些工作:
- 解析配置。
- 创建
APIFlask应用。 - 初始化日志、插件、HTTP、JSON、Moment。
- 初始化数据库、JWT、迁移、限流、缓存、事件总线。
- 导入业务模型。
- 初始化服务客户端和任务运行器。
- 注册模块的
init_app和register_commands。 - 注册可选 SPA 路由。
- 注册模块路由、权限元数据和菜单元数据。
- 初始化服务层。
扩展组件
常用扩展从 iti.applications.extensions 引入:
from iti.applications.extensions import db, migrate, jwt, limiter
from iti.applications.extensions import cache_simple, cache_redis, eventbus
框架还提供:
iti.applications.common.utils.successiti.applications.common.utils.failiti.applications.common.utils.pageiti.applications.common.utils.pagination_builder
后台 API 默认使用响应 envelope:
{"data": {}, "code": 200, "message": "成功"}
服务间 API 应使用真实 HTTP 状态码。
默认错误页
框架内置 403、404、500 HTML 错误页。
请求更偏向 HTML 时返回模板页。 请求更偏向 JSON 时返回:
{"data": null, "code": 404, "message": "Not Found"}
SPA 静态目录
SPA 承载默认关闭。
业务项目开启后,框架从 FRONTEND_PATH 读取 index.html 和静态文件:
FRONTEND_ENABLED = True
FRONTEND_PATH = "frontend/dist"
FRONTEND_PATH 可以是绝对路径。
相对路径按业务项目配置里的 BASE_DIR 解析。
扩展框架
业务项目通过模块扩展框架:
- 注册业务蓝图。
- 注册 CLI 命令。
- 声明权限元数据。
- 声明菜单 seed 元数据。
- 增加业务模型。
- 增加业务配置。
- 配置服务客户端。
- 注册任务。
框架问题在框架仓库修复,再发布新 tag。 业务项目不复制框架源码,也不覆盖框架 import path。