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

1.9 KiB
Raw Permalink Blame History

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实现过程中注意分层原则。