GoTest/PROJECT_SUMMARY.md
Table 4f6f308d23 docs: 更新 README 和 PROJECT_SUMMARY 文档
- README.md 更新:
  * 文档生成部分:添加详细的命令说明和使用方法
  * 新增 SWAGGER_PORT 配置说明章节,包括变量定义、影响范围、修改方法
  * 更新系统接口表格中的 Swagger 描述
  * 说明应用内置 Swagger UI 的使用方法

- PROJECT_SUMMARY.md 更新:
  * 添加项目概述描述
  * 更新 API 文档部分,反映已实现的功能
  * 更新构建和部署部分,添加端口配置和进程管理功能
  * 详细分类 Make 命令,添加所有新命令说明
  * 更新系统接口说明,添加 Swagger UI 访问地址
  * 更新下一步建议,使用新的文档生成命令
  * 新增"最新优化功能"章节,详细说明端口配置和文档优化
2025-11-29 20:13:00 +08:00

10 KiB
Raw Permalink Blame History

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 devmake stagemake prod
  • Docker 容器化支持
  • 自动生成 Docker Compose 文件
  • 端口配置变量化(SERVER_PORTSWAGGER_PORT
  • 端口占用检查和自动处理
  • 端口进程管理命令(kill-portkill-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 生成文档

🔒 安全特性

  1. JWT 认证: 基于 JSON Web Token 的用户认证
  2. CORS 保护: 可配置的跨域资源共享
  3. 频率限制: 基于 Redis 的 API 调用频率限制
  4. 密码加密: 使用 bcrypt 加密用户密码
  5. 中间件保护: 多层安全中间件防护

🌍 环境配置

项目支持三种环境配置,每种环境都有独立的配置文件:

  • 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

📝 下一步建议

  1. 数据库设置: 确保 MySQL 数据库运行并执行 sql/init.sql
  2. Redis 设置: 确保 Redis 服务运行
  3. 环境变量: 在生产环境中设置敏感配置的环境变量
  4. SSL 证书: 在生产环境中配置 HTTPS
  5. 监控日志: 添加应用监控和日志收集
  6. 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-logsdocker-logs-dev,保持命名一致性
  • 自动重试机制Docker 容器停止失败时自动重试
  • 权限错误处理:自动检测并处理 rootless Docker 权限问题

🎯 项目特色

  • 完整的企业级架构: 分层清晰,易于维护
  • 高度可配置: 支持多环境配置
  • 安全性强: 多重安全防护机制
  • 易于部署: Docker 容器化支持
  • 测试完备: 完整的测试框架
  • 文档齐全: 详细的开发和部署文档

🔗 相关链接