Skip to content

yeah14/go-todo-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go-Todo-API

基于 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

安装步骤

  1. 克隆项目

    git clone https://github.com/yeah14/go-todo-api.git
    cd go-todo-api
  2. 复制配置文件模板并修改

    cp config/dev.yaml.example config/dev.yaml
    # 编辑 config/dev.yaml,填写数据库连接信息等
  3. 初始化数据库

    mysql -u root -p < scripts/init_db.sql
  4. 下载依赖

    go mod download
  5. 运行项目

    go run cmd/main.go
  6. 访问服务

    http://localhost:8080
    

使用 Makefile(可选)

项目提供了 Makefile 方便常用操作:

make run          # 运行服务
make build        # 编译二进制文件
make test         # 运行测试
make swag         # 生成 Swagger 文档
make clean        # 清理编译产物

📖 API 文档

项目集成了 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

🤝 贡献指南

欢迎贡献代码或提出建议!请遵循以下步骤:

  1. Fork 本仓库
  2. 创建您的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的更改 (git commit -m 'feat: 添加某个特性')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开一个 Pull Request

代码规范

📄 许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。


Happy Coding! 🎉

About

基于 Go + Gin 的待办事项管理系统 API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages