基于 Go + Gin 的待办事项管理系统 API,提供用户认证、待办事项管理、标签分类等完整功能。
| 技术 | 作用 | 版本 |
|---|---|---|
| Go | 后端编程语言 | 1.20+ |
| Gin | Web 框架 | 最新 |
| GORM | ORM 库 | 最新 |
| MySQL | 数据库 | 8.0+ |
| JWT | 身份认证 | 最新 |
| Swagger | API 文档 | 最新 |
| Viper | 配置管理 | 最新 |
| Zap | 日志记录 | 最新 |
- 用户认证
- 用户注册(用户名、邮箱、密码)
- 用户登录(返回 JWT 令牌)
- 令牌刷新
- 用户管理
- 获取当前用户信息
- 更新个人资料(用户名、邮箱、头像)
- 修改密码
- 待办事项
- 创建待办事项(标题、描述、优先级、截止时间、标签)
- 获取待办事项详情
- 更新待办事项
- 删除待办事项(软删除)
- 分页获取待办事项列表(支持状态、优先级、标签筛选)
- 批量更新待办事项状态
- 标签管理
- 创建标签(名称、颜色)
- 获取标签列表
- 更新标签
- 删除标签
- Go 1.20 或更高版本
- MySQL 8.0 或更高版本
- Git
-
克隆项目
git clone https://github.com/yeah14/go-todo-api.git cd go-todo-api -
复制配置文件模板并修改
cp config/dev.yaml.example config/dev.yaml # 编辑 config/dev.yaml,填写数据库连接信息等 -
初始化数据库
mysql -u root -p < scripts/init_db.sql -
下载依赖
go mod download
-
运行项目
go run cmd/main.go
-
访问服务
http://localhost:8080
项目提供了 Makefile 方便常用操作:
make run # 运行服务
make build # 编译二进制文件
make test # 运行测试
make swag # 生成 Swagger 文档
make clean # 清理编译产物项目集成了 Swagger,启动服务后访问以下地址查看在线 API 文档并进行测试:
http://localhost:8080/swagger/index.html
| 方法 | 路径 | 描述 |
|---|---|---|
| POST | /api/v1/auth/register |
用户注册 |
| POST | /api/v1/auth/login |
用户登录 |
| POST | /api/v1/auth/refresh |
刷新令牌 |
| 方法 | 路径 | 描述 |
|---|---|---|
| GET | /api/v1/user/me |
获取当前用户信息 |
| POST | /api/v1/user/me |
更新用户信息 |
| POST | /api/v1/user/me/password |
修改密码 |
| 方法 | 路径 | 描述 |
|---|---|---|
| GET | /api/v1/todos |
获取待办事项列表(分页) |
| POST | /api/v1/todos |
创建待办事项 |
| GET | /api/v1/todos/:id |
获取待办事项详情 |
| PUT | /api/v1/todos/:id |
更新待办事项 |
| DELETE | /api/v1/todos/:id |
删除待办事项 |
| PUT | /api/v1/todos/batch/status |
批量更新状态 |
| 方法 | 路径 | 描述 |
|---|---|---|
| GET | /api/v1/tags |
获取标签列表 |
| POST | /api/v1/tags |
创建标签 |
| PUT | /api/v1/tags/:id |
更新标签 |
| DELETE | /api/v1/tags/:id |
删除标签 |
go-todo-api/
├── cmd/
│ └── main.go # 程序入口
├── config/
│ ├── config.go # 配置结构
│ ├── dev.yaml # 开发配置
│ └── prod.yaml # 生产配置
├── internal/
│ ├── app/
│ │ ├── dto/ # 数据传输对象
│ │ │ ├── request/
│ │ │ └── response/
│ │ ├── handler/ # HTTP 处理器
│ │ └── middleware/ # 中间件
│ ├── domain/
│ │ ├── model/ # 数据模型
│ │ └── enum/ # 枚举定义
│ ├── repository/ # 数据访问层
│ └── service/ # 业务逻辑层
├── pkg/ # 公共包
│ ├── database/
│ ├── logger/
│ ├── jwt/
│ ├── encryption/
│ ├── validator/
│ └── response/
├── api/
│ └── swagger/ # Swagger 文档
├── scripts/ # 脚本
├── test/ # 测试
├── docs/ # 文档
├── .env.example # 环境变量示例
├── .gitignore
├── go.mod
├── go.sum
└── README.md
欢迎贡献代码或提出建议!请遵循以下步骤:
- Fork 本仓库
- 创建您的特性分支 (
git checkout -b feature/AmazingFeature) - 提交您的更改 (
git commit -m 'feat: 添加某个特性') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开一个 Pull Request
- 遵循 Go 官方代码规范
- 提交信息使用 Conventional Commits 规范
- 确保测试通过 (
go test ./...)
本项目采用 MIT 许可证。详见 LICENSE 文件。
Happy Coding! 🎉