first commit
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
go/
|
||||
├── 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,实现过程中注意分层原则。
|
||||
Reference in New Issue
Block a user