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.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# 架构
iTi-Flask 是框架基座。
它提供后端项目的通用工程能力,不内置具体业务。
## 包定位
框架负责:
- 应用工厂。
- 配置加载。
- APIFlask 集成。
- SQLAlchemy 和 Flask-Migrate 初始化。
- JWT、缓存、限流、日志、错误处理。
- 模块注册协议。
- HTTP JSON 服务客户端。
- 单进程任务运行器。
- Copier 业务项目模板。
- 可选 SPA 静态目录承载。
- 默认 HTML 错误页。
框架不负责:
- 系统业务。
- 业务表和业务路由。
- 业务 seed。
- 业务前端构建产物。
需要系统业务时,业务项目额外依赖 `iTi-System` 。
## 应用创建流程
`create_app()` 会按顺序完成这些工作:
1. 解析配置。
2. 创建 `APIFlask` 应用。
3. 初始化日志、插件、HTTP、JSON、Moment。
4. 初始化数据库、JWT、迁移、限流、缓存、事件总线。
5. 导入业务模型。
6. 初始化服务客户端和任务运行器。
7. 注册模块的 `init_app` 和 `register_commands` 。
8. 注册可选 SPA 路由。
9. 注册模块路由、权限元数据和菜单元数据。
10. 初始化服务层。
## 扩展组件
常用扩展从 `iti.applications.extensions` 引入:
```python
from iti.applications.extensions import db , migrate , jwt , limiter
from iti.applications.extensions import cache_simple , cache_redis , eventbus
```
框架还提供:
- `iti.applications.common.utils.success`
- `iti.applications.common.utils.fail`
- `iti.applications.common.utils.page`
- `iti.applications.common.utils.pagination_builder`
后台 API 默认使用响应 envelope:
```json
{ "data" : {}, "code" : 200 , "message" : "成功" }
```
服务间 API 应使用真实 HTTP 状态码。
## 默认错误页
框架内置 `403` 、`404`、`500` HTML 错误页。
请求更偏向 HTML 时返回模板页。
请求更偏向 JSON 时返回:
```json
{ "data" : null , "code" : 404 , "message" : "Not Found" }
```
## SPA 静态目录
SPA 承载默认关闭。
业务项目开启后,框架从 `FRONTEND_PATH` 读取 `index.html` 和静态文件:
```python
FRONTEND_ENABLED = True
FRONTEND_PATH = "frontend/dist"
```
`FRONTEND_PATH` 可以是绝对路径。
相对路径按业务项目配置里的 `BASE_DIR` 解析。
## 扩展框架
业务项目通过模块扩展框架:
- 注册业务蓝图。
- 注册 CLI 命令。
- 声明权限元数据。
- 声明菜单 seed 元数据。
- 增加业务模型。
- 增加业务配置。
- 配置服务客户端。
- 注册任务。
框架问题在框架仓库修复,再发布新 tag。
业务项目不复制框架源码,也不覆盖框架 import path。