|
17 | 17 |
|
18 | 18 | --- |
19 | 19 |
|
| 20 | +## 🚀 快速开始 |
| 21 | + |
| 22 | +### 启动学习环境 |
| 23 | + |
| 24 | +```bash |
| 25 | +# 克隆项目 |
| 26 | +git clone https://github.com/lookteas/go-web-api-study.git |
| 27 | +cd go-web-api-study |
| 28 | + |
| 29 | +# 启动Web学习服务器 |
| 30 | +go run cmd/api/main.go |
| 31 | +# 或者构建后运行 |
| 32 | +go build -o server.exe cmd/api/main.go |
| 33 | +./server.exe |
| 34 | +``` |
| 35 | + |
| 36 | +### 访问学习界面 |
| 37 | + |
| 38 | +启动服务器后,访问以下地址: |
| 39 | + |
| 40 | +- **🏠 主页**: http://localhost:8080 |
| 41 | +- **📝 每日练习**: http://localhost:8080/exercises |
| 42 | +- **🔧 基础模块**: http://localhost:8080/gobase |
| 43 | +- **💚 健康检查**: http://localhost:8080/health |
| 44 | + |
| 45 | +--- |
| 46 | + |
20 | 47 | ## 📚 学习内容概览 |
21 | 48 |
|
22 | | -| 主题 | 内容 | |
23 | | -|------|------| |
24 | | -| ✅ 基础语法回顾 | 变量、函数、结构体、接口、并发等 | |
25 | | -| ✅ HTTP 服务开发 | 使用 `net/http` 构建基础 Web 服务 | |
26 | | -| ✅ 路由控制 | 使用 `gorilla/mux` 或 `gin` 实现路由 | |
27 | | -| ✅ RESTful API 设计 | 请求处理、JSON 序列化、状态码规范 | |
28 | | -| ✅ 中间件开发 | 日志、认证、CORS、限流等 | |
29 | | -| ✅ 数据库操作 | 使用 `database/sql` 与 `GORM` 操作 PostgreSQL/MySQL | |
30 | | -| ✅ 用户认证 | JWT、Session、OAuth2 基础实现 | |
31 | | -| ✅ 配置管理 | 使用 `Viper` 管理配置文件 | |
32 | | -| ✅ 错误处理 | 统一错误响应结构 | |
33 | | -| ✅ 接口测试 | 使用 `testing` 包进行单元测试与集成测试 | |
34 | | -| ✅ 项目结构设计 | 推荐的 Go 项目分层结构(如 api, service, model, handler) | |
35 | | -| ✅ 部署实践 | Docker 打包、简单部署流程 | |
| 49 | +| 主题 | 内容 | 状态 | |
| 50 | +|------|------|------| |
| 51 | +| ✅ 基础语法回顾 | 变量、函数、结构体、接口、并发等 | 已完成 | |
| 52 | +| ✅ HTTP 服务开发 | 使用 `net/http` 构建基础 Web 服务 | 已完成 | |
| 53 | +| ✅ RESTful API 设计 | 请求处理、JSON 序列化、状态码规范 | 已完成 | |
| 54 | +| ✅ 数据库操作 | SQL操作、连接池、事务、ORM基础 | 已完成 | |
| 55 | +| ✅ 高级特性 | 并发模式、反射、泛型、性能优化、设计模式 | 已完成 | |
| 56 | +| ✅ 中间件开发 | 日志、认证、CORS、限流等 | 已完成 | |
| 57 | +| ✅ 用户认证 | JWT、Session、OAuth2 基础实现 | 已完成 | |
| 58 | +| ✅ 配置管理 | 使用 `Viper` 管理配置文件 | 已完成 | |
| 59 | +| ✅ 错误处理 | 统一错误响应结构 | 已完成 | |
| 60 | +| ✅ 接口测试 | 使用 `testing` 包进行单元测试与集成测试 | 已完成 | |
| 61 | +| ✅ 项目结构设计 | 推荐的 Go 项目分层结构 | 已完成 | |
| 62 | +| ✅ 部署实践 | Docker 打包、简单部署流程 | 已完成 | |
36 | 63 |
|
37 | 64 | --- |
38 | 65 |
|
39 | | -## 📁 项目结构示例(建议) |
| 66 | +## 📁 项目结构 |
40 | 67 |
|
41 | 68 | ```bash |
42 | 69 | . |
43 | 70 | ├── cmd/ # 主程序入口 |
44 | 71 | │ └── api/ |
45 | | -│ └── main.go |
| 72 | +│ └── main.go # Web服务器主程序 |
| 73 | +├── docs/ # 文档目录 |
| 74 | +│ └── learning_plan.md # 学习计划文档 |
| 75 | +├── exercises/ # 每日练习目录 |
| 76 | +│ ├── README.md # 6周练习计划 |
| 77 | +│ ├── day01/ # 第1天练习 |
| 78 | +│ │ └── hello_world.go |
| 79 | +│ ├── day02/ # 第2天练习 |
| 80 | +│ │ └── hello_world.go |
| 81 | +│ └── day03/ # 第3天练习 |
| 82 | +│ └── ...... |
| 83 | +├── gobase/ # Go基础学习模块 |
| 84 | +│ ├── README.md # 模块说明 |
| 85 | +│ ├── 01_variables_and_types.go # 变量和类型 |
| 86 | +│ ├── 02_functions.go # 函数 |
| 87 | +│ ├── 03_structs_and_interfaces.go # 结构体和接口 |
| 88 | +│ ├── 04_concurrency.go # 并发编程 |
| 89 | +│ ├── 05_http_basics.go # HTTP基础 |
| 90 | +│ ├── 06_api_development.go # API开发 |
| 91 | +│ ├── 07_database_basics.go # 数据库操作 |
| 92 | +│ └── 08_advanced_features.go # 高级特性 |
46 | 93 | ├── internal/ # 内部逻辑代码 |
47 | 94 | │ ├── handler/ # HTTP 请求处理器 |
48 | | -│ ├── service/ # 业务逻辑 |
49 | | -│ ├── model/ # 数据结构与数据库模型 |
| 95 | +│ │ └── handler.go |
50 | 96 | │ ├── middleware/ # 自定义中间件 |
51 | | -│ └── config/ # 配置加载 |
52 | | -├── pkg/ # 可复用工具包 |
53 | | -├── config/ # 配置文件(如 config.yaml) |
54 | | -├── api/ # OpenAPI/Swagger 文档(可选) |
55 | | -├── scripts/ # 脚本(如数据库迁移) |
56 | | -├── tests/ # 测试代码 |
57 | | -├── go.mod |
58 | | -├── go.sum |
59 | | -└── README.md |
| 97 | +│ │ ├── cors.go |
| 98 | +│ │ └── logger.go |
| 99 | +│ ├── model/ # 数据结构与数据库模型 |
| 100 | +│ │ └── user.go |
| 101 | +│ └── service/ # 业务逻辑 |
| 102 | +│ └── user_service.go |
| 103 | +├── go.mod # Go模块文件 |
| 104 | +├── server.exe # 编译后的可执行文件 |
| 105 | +└── README.md # 项目说明文档 |
| 106 | +``` |
60 | 107 |
|
| 108 | +--- |
61 | 109 |
|
62 | | -# 克隆项目 |
63 | | -git clone https://github.com/你的用户名/go-web-api-study.git |
64 | | -cd go-web-api-study |
| 110 | +## 🎯 学习路径 |
| 111 | + |
| 112 | +### 第一阶段:基础语法 (gobase模块) |
| 113 | +1. **变量和类型** - 掌握Go的基本数据类型和变量声明 |
| 114 | +2. **函数** - 学习函数定义、参数传递、闭包等 |
| 115 | +3. **结构体和接口** - 理解Go的面向对象编程 |
| 116 | +4. **并发编程** - 掌握goroutine和channel |
| 117 | + |
| 118 | +### 第二阶段:Web开发 (gobase模块) |
| 119 | +5. **HTTP基础** - 学习HTTP服务器开发 |
| 120 | +6. **API开发** - 构建RESTful API |
| 121 | +7. **数据库操作** - 数据持久化和ORM |
| 122 | +8. **高级特性** - 性能优化和设计模式 |
| 123 | + |
| 124 | +### 第三阶段:实践练习 (exercises目录) |
| 125 | +- **6周练习计划** - 每日一练,循序渐进 |
| 126 | +- **项目实战** - 结合所学知识构建完整项目 |
| 127 | + |
| 128 | +--- |
| 129 | + |
| 130 | +## 🔧 功能特性 |
| 131 | + |
| 132 | +### Web学习界面 |
| 133 | +- 📱 响应式设计,支持多设备访问 |
| 134 | +- 🎨 美观的UI界面,提升学习体验 |
| 135 | +- 📝 源代码在线查看,支持语法高亮 |
| 136 | +- 🔗 便捷的导航链接,快速跳转 |
| 137 | + |
| 138 | +### 学习模块 |
| 139 | +- 📚 **8个基础模块** - 从入门到进阶的完整知识体系 |
| 140 | +- 💡 **丰富的代码示例** - 每个概念都有实际代码演示 |
| 141 | +- 📖 **详细的注释说明** - 帮助理解每行代码的作用 |
| 142 | +- 🛠️ **实用工具函数** - 可直接在项目中使用 |
| 143 | + |
| 144 | +### 练习系统 |
| 145 | +- 📅 **6周学习计划** - 科学安排学习进度 |
| 146 | +- 🎯 **循序渐进** - 从简单到复杂,逐步提升 |
| 147 | +- 💻 **命令行运行** - 支持直接运行练习代码 |
| 148 | +- 🌐 **Web端查看** - 在浏览器中查看源代码 |
| 149 | + |
| 150 | +--- |
| 151 | + |
| 152 | +## 🤝 贡献指南 |
| 153 | + |
| 154 | +欢迎提交 Issue 和 Pull Request 来完善这个学习项目! |
| 155 | + |
| 156 | +### 贡献方式 |
| 157 | +1. Fork 本仓库 |
| 158 | +2. 创建你的特性分支 (`git checkout -b feature/AmazingFeature`) |
| 159 | +3. 提交你的修改 (`git commit -m 'Add some AmazingFeature'`) |
| 160 | +4. 推送到分支 (`git push origin feature/AmazingFeature`) |
| 161 | +5. 打开一个 Pull Request |
| 162 | + |
| 163 | +--- |
| 164 | + |
| 165 | +## 📄 许可证 |
| 166 | + |
| 167 | +本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 |
| 168 | + |
| 169 | +--- |
| 170 | + |
| 171 | +## 🙏 致谢 |
| 172 | + |
| 173 | +感谢所有为Go语言生态系统做出贡献的开发者们! |
| 174 | + |
| 175 | +--- |
| 176 | + |
| 177 | +**Happy Coding! 🚀** |
0 commit comments