Files
2025-12-10 19:03:24 +08:00

120 lines
3.2 KiB
Markdown
Raw Permalink 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.
# RelationshipManagement-backend
基于 Gin 框架的分层架构后端项目
## 项目结构
```
RelationshipManagement-backend/
├── main.go # 应用入口
├── go.mod # Go 模块依赖
├── config/ # 配置层
│ └── config.go # 配置管理
├── model/ # 数据模型层
│ └── user.go # 用户模型
├── dao/ # 数据访问层 (Data Access Object)
│ ├── db.go # 数据库连接
│ └── user_dao.go # 用户数据访问
├── service/ # 业务逻辑层
│ └── user_service.go # 用户服务
├── handler/ # 处理器层 (Controller)
│ └── user_handler.go # 用户处理器
├── router/ # 路由层
│ └── router.go # 路由配置
└── middleware/ # 中间件
├── cors.go # 跨域中间件
├── logger.go # 日志中间件
└── recovery.go # 恢复中间件
```
## 架构说明
### 分层架构
1. **Router 层** (`router/`)
- 负责路由配置和请求分发
- 将 HTTP 请求路由到对应的 Handler
2. **Handler 层** (`handler/`)
- 处理 HTTP 请求和响应
- 参数验证和绑定
- 调用 Service 层处理业务逻辑
3. **Service 层** (`service/`)
- 业务逻辑处理
- 数据验证和业务规则
- 调用 DAO 层进行数据操作
4. **DAO 层** (`dao/`)
- 数据访问对象
- 数据库 CRUD 操作
- 数据库连接管理
5. **Model 层** (`model/`)
- 数据模型定义
- 数据库表结构映射
6. **Config 层** (`config/`)
- 配置管理
- 环境变量读取
7. **Middleware 层** (`middleware/`)
- 全局中间件
- CORS、日志、错误恢复等
## 环境配置
通过环境变量配置(可选,有默认值):
- `SERVER_PORT`: 服务器端口(默认: 8080
- `GIN_MODE`: Gin 模式debug/release/test默认: debug
- `DB_HOST`: 数据库主机(默认: localhost
- `DB_PORT`: 数据库端口(默认: 3306
- `DB_USER`: 数据库用户(默认: root
- `DB_PASSWORD`: 数据库密码(默认: 空)
- `DB_NAME`: 数据库名称(默认: relationship_db
## 运行项目
1. 安装依赖:
```bash
go mod tidy
```
2. 配置数据库(可选,修改环境变量或代码中的默认值)
3. 运行项目:
```bash
go run main.go
```
4. 访问健康检查接口:
```
GET http://localhost:8080/health
```
## API 接口
### 用户相关接口
- `POST /api/users` - 创建用户
- `GET /api/users` - 获取用户列表(支持分页)
- `GET /api/users/:id` - 根据ID获取用户
- `PUT /api/users/:id` - 更新用户
- `DELETE /api/users/:id` - 删除用户
## 依赖说明
- **gin**: Web 框架
- **gorm**: ORM 框架
- **mysql**: MySQL 数据库驱动
- **logrus**: 日志库
## 开发建议
1. 添加新的业务模块时,按照相同的分层结构创建文件
2.`dao/db.go``AutoMigrate()` 函数中添加新模型的自动迁移
3. 根据实际需求调整中间件和配置
4. 生产环境建议使用配置文件(如 YAML、JSON替代环境变量