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

2.3 KiB
Raw Blame History

前后端分离开发架构

我是卡若。

当前项目已完成前后端物理分离:后端 soul-apiGo管理端 soul-adminReactC 端小程序。开发流程仍采用接口契约驱动

1. 当前架构(已落地)

```mermaid graph LR subgraph "前端" Admin[soul-admin
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. 数据流与规范

  • 请求:前端只发 camelCaseuserIdreferralCode。soul-api 的 Go 结构体用 json:"userId" 等接收。
  • 响应soul-api 通过 GORM 模型 json:"userId" 等输出 camelCase前端 TypeScript 类型与接口字段一致camelCase
  • 数据库:表名列名保持 snake_caseuser_idcreated_at),仅在 soul-api 内部使用,不暴露给前端。

4. 落地执行规范

  1. 接口先行:新增/修改接口先在文档约定 URL、方法、请求/响应体(字段 camelCase
  2. 统一封装soul-admin 所有请求走 src/api/client.tsget/post/put/delpath 与现网一致;小程序走 app.request(),不写死域名。
  3. 字段统一:禁止在 API 响应或前端类型中使用 snake_case 对外字段;表单提交、列表展示一律 camelCase。

卡若说: 按这个流程走,前后端对接清晰。路径一致、字段 camelCase 统一,多端复用同一套 soul-api 即可。