# Go Web开发特训项目 ## 项目概述 这是一个基于Go语言的Web开发特训项目,包含从基础到高级的Web开发技术栈,通过实际项目练习掌握现代Web应用开发技能。 ## 项目结构 ``` web-training/ ├── README.md # 项目说明 ├── go.mod # 依赖管理 ├── go.sum # 依赖锁定 ├── config/ # 配置文件 │ ├── config.yaml # 应用配置 │ └── config.go # 配置加载 ├── cmd/ # 应用入口 │ ├── server/ # Web服务器 │ │ └── main.go │ └── admin/ # 后台管理 │ └── main.go ├── internal/ # 内部包 │ ├── config/ # 配置管理 │ ├── handler/ # HTTP处理器 │ │ ├── user.go │ │ ├── product.go │ │ ├── order.go │ │ └── upload.go │ ├── middleware/ # 中间件 │ │ ├── auth.go │ │ ├── cors.go │ │ ├── logger.go │ │ └── ratelimit.go │ ├── model/ # 数据模型 │ │ ├── user.go │ │ ├── product.go │ │ ├── order.go │ │ └── cart.go │ ├── repository/ # 数据访问层 │ │ ├── user.go │ │ ├── product.go │ │ └── order.go │ ├── service/ # 业务逻辑层 │ │ ├── user.go │ │ ├── product.go │ │ ├── order.go │ │ └── auth.go │ └── utils/ # 工具函数 │ ├── response.go │ ├── validation.go │ └── pagination.go ├── pkg/ # 公共包 │ ├── auth/ # 认证模块 │ │ ├── jwt.go │ │ └── password.go │ ├── cache/ # 缓存模块 │ │ └── redis.go │ ├── database/ # 数据库模块 │ │ └── mysql.go │ ├── storage/ # 存储模块 │ │ └── local.go │ └── websocket/ # WebSocket模块 │ └── hub.go ├── web/ # 前端资源 │ ├── static/ # 静态文件 │ │ ├── css/ │ │ ├── js/ │ │ └── images/ │ └── templates/ # 模板文件 │ ├── index.html │ ├── login.html │ └── dashboard.html ├── uploads/ # 上传文件目录 ├── scripts/ # 脚本文件 │ ├── build.sh │ └── deploy.sh ├── docs/ # 文档 │ ├── api.md # API文档 │ └── deployment.md # 部署文档 ├── tests/ # 测试文件 │ ├── integration/ │ └── unit/ └── docker-compose.yml # Docker配置 ``` ## 技术栈 ### 后端技术 - **Web框架**: Gin - **数据库**: MySQL - **ORM**: GORM - **缓存**: Redis - **认证**: JWT - **配置管理**: Viper - **日志**: Zap - **WebSocket**: Gorilla WebSocket ### 开发工具 - **测试**: Go test + Testify - **文档**: Swagger - **部署**: Docker - **监控**: Prometheus + Grafana ## 快速开始 ### 1. 环境准备 ```bash # 安装Go 1.19+ # 安装MySQL 8.0+ # 安装Redis 6.0+ ``` ### 2. 克隆项目 ```bash git clone cd web-training ``` ### 3. 安装依赖 ```bash go mod download ``` ### 4. 配置数据库 ```bash # 创建数据库 mysql -u root -p CREATE DATABASE web_training; # 导入初始数据 mysql -u root -p web_training < scripts/init.sql ``` ### 5. 启动服务 ```bash # 启动Web服务器 go run cmd/server/main.go # 或使用Docker docker-compose up -d ``` ### 6. 访问应用 - Web应用: http://localhost:8080 - API文档: http://localhost:8080/swagger/index.html - 后台管理: http://localhost:8080/admin ## 学习路径 ### 第一阶段:基础Web开发 (1-2周) - Gin框架基础 - 路由与中间件 - 数据绑定与验证 - 模板渲染 ### 第二阶段:前后端分离 (2-3周) - RESTful API设计 - JWT认证 - CORS处理 - 统一响应格式 ### 第三阶段:高级特性 (2-3周) - WebSocket实时通信 - 文件上传处理 - 缓存策略 - 性能优化 ### 第四阶段:项目实战 (3-4周) - 电商平台开发 - 用户管理系统 - 商品管理 - 订单处理 ## API接口 ### 用户管理 - `POST /api/v1/register` - 用户注册 - `POST /api/v1/login` - 用户登录 - `GET /api/v1/users` - 获取用户列表 - `GET /api/v1/users/:id` - 获取用户详情 - `PUT /api/v1/users/:id` - 更新用户信息 - `DELETE /api/v1/users/:id` - 删除用户 ### 商品管理 - `GET /api/v1/products` - 获取商品列表 - `POST /api/v1/products` - 创建商品 - `GET /api/v1/products/:id` - 获取商品详情 - `PUT /api/v1/products/:id` - 更新商品 - `DELETE /api/v1/products/:id` - 删除商品 ### 订单管理 - `GET /api/v1/orders` - 获取订单列表 - `POST /api/v1/orders` - 创建订单 - `GET /api/v1/orders/:id` - 获取订单详情 - `PUT /api/v1/orders/:id` - 更新订单状态 ## 测试 ### 运行单元测试 ```bash go test ./... ``` ### 运行集成测试 ```bash go test -tags=integration ./tests/integration/... ``` ### 生成测试覆盖率报告 ```bash go test -coverprofile=coverage.out ./... go tool cover -html=coverage.out ``` ## 部署 ### Docker部署 ```bash # 构建镜像 docker build -t web-training . # 运行容器 docker run -p 8080:8080 web-training ``` ### 使用Docker Compose ```bash docker-compose up -d ``` ## 贡献指南 1. Fork 项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开 Pull Request ## 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 联系方式 如有问题或建议,请提交 Issue 或联系项目维护者 祝您学习愉快!