- README.md 更新: * 文档生成部分:添加详细的命令说明和使用方法 * 新增 SWAGGER_PORT 配置说明章节,包括变量定义、影响范围、修改方法 * 更新系统接口表格中的 Swagger 描述 * 说明应用内置 Swagger UI 的使用方法 - PROJECT_SUMMARY.md 更新: * 添加项目概述描述 * 更新 API 文档部分,反映已实现的功能 * 更新构建和部署部分,添加端口配置和进程管理功能 * 详细分类 Make 命令,添加所有新命令说明 * 更新系统接口说明,添加 Swagger UI 访问地址 * 更新下一步建议,使用新的文档生成命令 * 新增"最新优化功能"章节,详细说明端口配置和文档优化
10 KiB
10 KiB
Yinli API 项目总结
🎉 项目概述
基于 Golang Gin 框架构建的高性能 RESTful API 服务,集成了 JWT 认证、Redis 缓存、频率限制、CORS 等安全特性,支持多环境部署和完整的 API 文档生成。
以下是项目的详细总结:
✅ 已完成的功能
1. 项目基础架构
- ✅ 基于 Gin 框架的 RESTful API 服务
- ✅ 清晰的项目目录结构(src 目录统一管理源代码)
- ✅ Go 模块依赖管理
2. 配置管理系统
- ✅ 使用 Viper 库进行配置管理
- ✅ 支持三种环境配置:dev(开发)、stage(预发布)、prod(生产)
- ✅ 配置文件保存在
config/目录
3. 数据库集成
- ✅ MySQL 数据库连接和管理
- ✅ GORM ORM 库集成
- ✅ 用户模型和数据访问层
- ✅ 数据库初始化脚本(
sql/init.sql)
4. 缓存系统
- ✅ Redis 缓存集成
- ✅ 完整的 Redis 操作封装
- ✅ 用于频率限制和会话管理
5. 安全特性
- ✅ JWT 认证系统
- ✅ CORS 跨域支持
- ✅ 基于 Redis 的 API 频率限制
- ✅ bcrypt 密码加密
- ✅ 多层中间件安全防护
6. 用户认证接口
- ✅ 用户注册接口 (
POST /api/auth/register) - ✅ 用户登录接口 (
POST /api/auth/login) - ✅ 用户资料管理接口
- ✅ 管理员权限接口
7. 构建和部署
- ✅ 完整的 Makefile 构建脚本
- ✅ 支持多环境启动命令(
make dev、make stage、make prod) - ✅ Docker 容器化支持
- ✅ 自动生成 Docker Compose 文件
- ✅ 端口配置变量化(
SERVER_PORT、SWAGGER_PORT) - ✅ 端口占用检查和自动处理
- ✅ 端口进程管理命令(
kill-port、kill-port-force)
8. 测试框架
- ✅ 使用 Testify 测试框架
- ✅ 配置系统测试
- ✅ 中间件测试
- ✅ 接口测试框架(需要数据库连接时可启用)
9. API 文档
- ✅ Swagger 文档自动生成(
make docs) - ✅ 自动安装 swag 工具(如果未安装)
- ✅ 自动过滤生成过程中的警告信息
- ✅ 自动修复生成的
docs.go文件兼容性问题 - ✅ 支持按环境分离文档生成(dev/stage/prod)
- ✅ Docker Swagger UI 服务(
make docs-serve) - ✅ 应用内置 Swagger UI(
/swagger/index.html) - ✅ 文档保存在
doc/目录
10. 详细文档
- ✅ 完整的 README.md 说明文档
- ✅ 技术架构说明
- ✅ 开发调试指南
- ✅ 部署说明
🚀 快速启动指南
1. 基本启动
# 进入项目目录
cd /home/table/Workspace/go/src/yinli-api
# 查看所有可用命令
make help
# 下载依赖
make deps
# 启动开发环境
make dev
2. Docker 启动
开发环境
# 生成 Docker Compose 文件(可选,文件已存在)
make docker-compose-dev
# 启动开发环境容器
make docker-up-dev
# 查看日志
make docker-logs-dev
# 停止服务
make docker-down-dev
预发布环境
# 启动预发布环境容器
make docker-up-stage
# 查看日志
make docker-logs-stage
# 停止服务
make docker-down-stage
生产环境
# 设置环境变量(重要!)
export MYSQL_ROOT_PASSWORD=your_secure_password
export REDIS_PASSWORD=your_redis_password
# 启动生产环境容器
make docker-up-prod
# 查看日志
make docker-logs-prod
# 停止服务
make docker-down-prod
3. 运行测试
# 运行所有测试
make test
# 生成测试覆盖率报告
make test-coverage
📁 项目结构概览
yinli-api/
├── src/ # 源代码目录
│ ├── main.go # 应用程序入口
│ ├── handler/ # HTTP 处理器
│ ├── middleware/ # 中间件
│ ├── model/ # 数据模型
│ ├── repository/ # 数据访问层
│ ├── service/ # 业务逻辑层
│ └── pkg/ # 可复用包
│ ├── auth/ # JWT 认证
│ ├── cache/ # Redis 缓存
│ ├── config/ # 配置管理
│ └── database/ # 数据库连接
├── config/ # 配置文件目录
│ ├── dev.yaml # 开发环境配置
│ ├── stage.yaml # 预发布环境配置
│ └── prod.yaml # 生产环境配置
├── docker/ # Docker 相关文件
├── sql/ # 数据库脚本
├── test/ # 测试文件
├── Dockerfile # Docker 镜像构建
├── Makefile # 构建脚本
└── README.md # 项目说明
🔧 主要技术栈
- Web 框架: Gin v1.11.0
- 数据库: MySQL 8.0 + GORM
- 缓存: Redis 7
- 认证: JWT (golang-jwt/jwt/v5)
- 配置: Viper v1.21.0
- 测试: Testify v1.11.1
- 文档: Swagger (gin-swagger)
- 容器: Docker + Docker Compose
🛠️ 可用的 Make 命令
开发命令
make help # 显示所有可用命令
make dev # 启动开发环境
make stage # 启动预发布环境
make prod # 启动生产环境
构建命令
make build # 构建应用程序
make build-all # 构建所有平台版本
make clean # 清理构建文件
测试命令
make test # 运行测试
make test-coverage # 运行测试并生成覆盖率报告
文档命令
make docs # 生成 API 文档(自动安装 swag)
make docs-serve # 启动 Swagger UI 服务器(Docker)
make docs-stop # 停止 Swagger UI 服务器
Docker 命令
make docker-up-dev # 启动 Docker 开发环境
make docker-up-stage # 启动 Docker 预发布环境
make docker-up-prod # 启动 Docker 生产环境
make docker-down-dev # 停止开发环境容器
make docker-logs-dev # 查看开发环境日志
make docker-ps # 查看所有容器状态
端口管理命令
make kill-port PORT=1234 # 终止指定端口的进程
make kill-port-force PORT=1234 # 强制终止指定端口的进程
make kill-1234 # 终止默认端口 1234 的进程
📡 API 接口列表
认证接口
POST /api/auth/register- 用户注册POST /api/auth/login- 用户登录
用户接口(需要 JWT 认证)
GET /api/user/profile- 获取用户资料PUT /api/user/profile- 更新用户资料PUT /api/user/password- 修改密码
管理员接口(需要管理员权限)
GET /api/admin/users- 获取用户列表DELETE /api/admin/users/{id}- 删除用户PUT /api/admin/users/{id}/status- 更新用户状态
系统接口
GET /health- 健康检查GET /swagger/*- API 文档(Swagger UI)- 访问地址:
http://localhost:$(SERVER_PORT)/swagger/index.html - 需要先执行
make docs生成文档
- 访问地址:
🔒 安全特性
- JWT 认证: 基于 JSON Web Token 的用户认证
- CORS 保护: 可配置的跨域资源共享
- 频率限制: 基于 Redis 的 API 调用频率限制
- 密码加密: 使用 bcrypt 加密用户密码
- 中间件保护: 多层安全中间件防护
🌍 环境配置
项目支持三种环境配置,每种环境都有独立的配置文件:
- dev: 开发环境,详细日志,宽松的安全设置
- stage: 预发布环境,生产级配置,用于测试
- prod: 生产环境,最严格的安全设置
📊 测试覆盖
项目包含以下测试:
- 配置系统测试
- JWT 认证中间件测试
- CORS 中间件测试
- 请求 ID 中间件测试
- 基础 API 接口测试
🚀 部署建议
开发环境
make dev
生产环境
# 设置环境变量
export MYSQL_ROOT_PASSWORD=your_secure_password
export REDIS_PASSWORD=your_redis_password
# 使用 Docker 部署
make docker-up-prod
# 查看日志
make docker-logs-prod
📝 下一步建议
- 数据库设置: 确保 MySQL 数据库运行并执行
sql/init.sql - Redis 设置: 确保 Redis 服务运行
- 环境变量: 在生产环境中设置敏感配置的环境变量
- SSL 证书: 在生产环境中配置 HTTPS
- 监控日志: 添加应用监控和日志收集
- API 文档: 运行
make docs自动生成 Swagger 文档,使用make docs-serve启动 Swagger UI 服务器
🔧 最新优化功能
端口配置管理
-
SERVER_PORT 变量:统一管理应用服务器端口(默认 1234)
- 自动更新配置文件中的
server.port - 自动更新 Docker Compose 端口映射
- 支持端口占用检查和自动处理
- 自动更新配置文件中的
-
SWAGGER_PORT 变量:统一管理 Swagger UI 端口(默认 8081)
- Docker Swagger UI 容器端口映射
- 静态文件服务器端口
API 文档生成优化
- 自动安装工具:
make docs自动检查并安装 swag 工具 - 警告过滤:自动过滤生成过程中的警告信息
- 兼容性修复:自动修复生成的
docs.go文件兼容性问题 - Docker Swagger UI:使用 Docker 运行完整的 Swagger UI 界面
- 应用内置 UI:支持通过
/swagger/index.html访问文档
Docker 命令优化
- 命令命名统一:
docker-logs→docker-logs-dev,保持命名一致性 - 自动重试机制:Docker 容器停止失败时自动重试
- 权限错误处理:自动检测并处理 rootless Docker 权限问题
🎯 项目特色
- 完整的企业级架构: 分层清晰,易于维护
- 高度可配置: 支持多环境配置
- 安全性强: 多重安全防护机制
- 易于部署: Docker 容器化支持
- 测试完备: 完整的测试框架
- 文档齐全: 详细的开发和部署文档