go.md 2.4 KB

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. 数据库设计: 设计 usersposts 表结构,编写迁移脚本或使用 GORM AutoMigrate。
  4. 模型定义: 创建 UserPost 的 Go struct。
  5. 数据库层: 实现数据库连接和 CRUD 函数。
  6. 业务逻辑层: 在 Service 中实现用户和文章管理逻辑。
  7. API Handlers: 创建处理 HTTP 请求的函数。
  8. 认证中间件: 创建 JWT 验证中间件。
  9. 路由: 定义所有 API 路由并应用中间件。
  10. 主函数: 组装所有模块,启动 Gin 服务器。
  11. 测试: 编写单元和集成测试。

先行任务: 整理详细的开发计划和接口文档。