yunzer_go/server/docs/后端开发规则.md
2025-11-06 15:56:29 +08:00

43 lines
1.9 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.

server/
├── models/ # 仅负责数据模型相关
│ ├── 结构体(struct)定义
│ ├── 字段标签与表名(TableName)
│ └── 数据库初始化(注册模型、连接数据库)
├── services/ # 核心业务逻辑层
│ ├── 所有业务处理方法含CRUD
│ ├── 模型数据校验
│ ├── 密码等安全相关加解密
│ └── 与 models 层的数据库操作
└── controllers/ # 控制器层,专注 HTTP
├── 请求参数解析
├── 参数有效性验证
├── 调用 services 处理业务
└── 响应数据统一格式化与错误处理
## 分层架构开发规范
### Models 层
- 只负责定义数据库结构和初始化,包含结构体、字段标签与表名映射,数据库注册与连接。
- 不允许包含任何业务逻辑、数据校验、密码处理或和 HTTP 相关的代码。
### Services 层
- 实现所有业务流程、数据访问、校验和跨模型业务逻辑。
- 通过 models 操作数据库,仅返回 struct 或错误。
- 实现数据校验、密码加密等业务需求;不直接处理 HTTP 请求或响应。
### Controllers 层
- 只负责接收和解析 HTTP 请求,进行参数校验。
- 调用 services 执行业务逻辑。
- 负责返回统一格式的响应结果,对业务错误进行捕获和转义为 HTTP 状态码和消息。
### 其它要求
- 各层代码职责单一,禁止跨层调用(如 controllers 直接操作 models
- 统一异常处理,业务错误只在 services 返回controllers 负责转换为 HTTP 响应。
- 保持 controller 轻量简洁,绝不包含业务处理逻辑。
- services 层所有数据变更、校验等均可单元测试。
- models 变动需清晰文档和数据库迁移脚本。
建议先设计 models 层,随后 services 层,最后实现 controllers实现过程中注意分层原则。