Files
soul-yongping/开发文档/2、架构/前后端架构分离策略.md
2026-02-09 15:09:29 +08:00

67 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 前后端分离开发架构
**我是卡若。**
当前项目已完成**前后端物理分离**:后端 soul-apiGo管理端 soul-adminReactC 端小程序。开发流程仍采用**接口契约驱动**。
## 1. 当前架构(已落地)
\`\`\`mermaid
graph LR
subgraph "前端"
Admin[soul-admin<br/>React+Vite]
Mini[微信小程序]
end
subgraph "后端 soul-api (Go)"
Gin[Gin Router /api/*]
Handler[Handler 层]
GORM[GORM]
Gin --> Handler --> GORM
end
MySQL[(MySQL)]
GORM --> MySQL
Admin -->|VITE_API_BASE_URL + path| Gin
Mini -->|baseUrl + path| Gin
\`\`\`
## 2. 分离开发流程
\`\`\`mermaid
sequenceDiagram
participant Doc as API 文档
participant FE as 前端 (soul-admin / 小程序)
participant BE as 后端 (soul-api)
Doc->>FE: 1. 接口定义 (URL、camelCase 字段)
Doc->>BE: 1. 同上
par 并行开发
FE->>FE: 2. Mock 或对接已有 API
FE->>FE: 3. UI 与交互,字段用 camelCase
BE->>BE: 2. Handler + Modeljson 标签 camelCase
BE->>BE: 3. 单元测试 / 联调
end
FE->>BE: 4. 联调path 一致body/response camelCase
BE-->>FE: 返回 camelCase JSON
\`\`\`
## 3. 数据流与规范
- **请求**:前端只发 camelCase`userId``referralCode`。soul-api 的 Go 结构体用 `json:"userId"` 等接收。
- **响应**soul-api 通过 GORM 模型 `json:"userId"` 等输出 camelCase前端 TypeScript 类型与接口字段一致camelCase
- **数据库**:表名列名保持 snake_case`user_id``created_at`),仅在 soul-api 内部使用,不暴露给前端。
## 4. 落地执行规范
1. **接口先行**:新增/修改接口先在文档约定 URL、方法、请求/响应体(字段 camelCase
2. **统一封装**soul-admin 所有请求走 `src/api/client.ts`get/post/put/delpath 与现网一致;小程序走 `app.request()`,不写死域名。
3. **字段统一**:禁止在 API 响应或前端类型中使用 snake_case 对外字段;表单提交、列表展示一律 camelCase。
---
**卡若说:**
按这个流程走,前后端对接清晰。路径一致、字段 camelCase 统一,多端复用同一套 soul-api 即可。