# Go 项目:博客 REST API ## 概述 使用 Go 和 `Gin` 框架构建一个博客系统的后端 REST API,支持用户和文章的 CRUD 操作及 JWT 认证。 ## 功能需求 ### 1. 用户模块 (User) - **注册**: `POST /api/users/register` - 请求体 `{"username", "password", "email"}`。密码需哈希加密。 - **登录**: `POST /api/users/login` - 请求体 `{"username", "password"}`。成功后返回 JWT。 - **获取信息**: `GET /api/users/:id` - 返回指定用户信息(无密码)。 - **更新信息**: `PUT /api/users/:id` - 需 JWT 认证,仅限用户本人。 ### 2. 文章模块 (Post) - **创建文章**: `POST /api/posts` - 需 JWT 认证。请求体 `{"title", "content", "author_id"}`。 - **获取所有文章**: `GET /api/posts` - 支持分页。 - **获取单篇文章**: `GET /api/posts/:id`。 - **更新文章**: `PUT /api/posts/:id` - 需 JWT 认证,仅限作者。 - **删除文章**: `DELETE /api/posts/:id` - 需 JWT 认证,仅限作者或管理员。 ## 技术栈 - **语言**: Go - **框架**: Gin - **数据库**: PostgreSQL - **ORM/Driver**: GORM 或 sqlx - **认证**: JWT (`golang-jwt/jwt`) - **密码哈希**: `bcrypt` - **配置**: Viper - **代码结构**: Standard Go Project Layout ## 项目结构 ``` /goblog ├── /cmd/server/main.go # 入口 ├── /internal/ │ ├── /api # Handlers, 路由, 中间件 │ ├── /core # Models, Services (业务逻辑) │ ├── /platform # 数据库, 认证 │ └── /config # 配置加载 ├── go.mod └── config.yaml ``` ## 任务步骤 1. **初始化**: 设置 Go module, 安装依赖。 2. **配置**: 创建 `config.yaml` 并用 Viper 加载数据库和 JWT 设置。 3. **数据库设计**: 设计 `users` 和 `posts` 表结构,编写迁移脚本或使用 GORM AutoMigrate。 4. **模型定义**: 创建 `User` 和 `Post` 的 Go struct。 5. **数据库层**: 实现数据库连接和 CRUD 函数。 6. **业务逻辑层**: 在 Service 中实现用户和文章管理逻辑。 7. **API Handlers**: 创建处理 HTTP 请求的函数。 8. **认证中间件**: 创建 JWT 验证中间件。 9. **路由**: 定义所有 API 路由并应用中间件。 10. **主函数**: 组装所有模块,启动 Gin 服务器。 11. **测试**: 编写单元和集成测试。 **先行任务**: 整理详细的开发计划和接口文档。