字节笔记本

2026年2月23日

go-gin-api:基于 Gin 的模块化 API 开发框架

本文介绍 go-gin-api,一个基于 Gin 框架的模块化 API 开发框架。该框架封装了常用功能,提供代码生成、权限管理、监控告警等开箱即用的特性,帮助开发者快速构建企业级 Go 应用。

项目简介

go-gin-api 是由新亮开发的开源 Go 语言 API 框架,基于流行的 Gin Web 框架进行模块化设计。该项目在 GitHub 上已获得 6k+ stars1.1k forks,是 Go 语言生态中较受欢迎的快速开发框架之一。

框架设计理念是约束优于配置,通过增加合理的限制来规范团队开发,避免混乱无序的编码风格,特别适合中小型团队快速搭建业务系统。

核心特性

  • 模块化设计:清晰的目录结构,职责分离,便于维护和扩展
  • 代码生成工具:支持一键生成数据表 CURD 操作和控制器方法骨架
  • 权限管理:完整的 RBAC 权限系统,支持菜单授权和接口权限控制
  • JWT 认证:内置 JWT 签名验证机制,支持 Token 刷新和失效
  • 链路追踪:集成 Jaeger 实现分布式链路追踪
  • 监控告警:内置 Prometheus 指标采集和 panic 邮件告警
  • 日志系统:使用 Zap 进行结构化日志收集,支持 Loki 日志聚合
  • GraphQL 支持:集成 gqlgen 实现 GraphQL 查询
  • WebSocket:支持实时通讯功能
  • 定时任务:内置 cron 定时任务调度

技术栈

组件用途
GinWeb 框架核心
GORMORM 数据库操作
Viper配置文件解析
Zap高性能日志库
JWT身份认证
SwaggerAPI 文档自动生成
Prometheus监控指标采集
Jaeger分布式链路追踪
gRPC微服务通信
GraphQL查询语言支持

环境准备

  • Go: 1.16+(使用了 //go:embed 特性)
  • MySQL: 数据库服务,用于数据存储
  • Redis: 缓存服务,用于会话和缓存

快速开始

1. 克隆项目

bash
git clone https://github.com/xinliangnote/go-gin-api.git
cd go-gin-api

2. 配置环境

首次启动程序后,会自动打开安装界面(http://127.0.0.1:9999/install):

  1. 输入 MySQL 连接信息(地址、数据库名、用户名、密码)
  2. 输入 Redis 连接信息(地址、密码、DB)
  3. 点击初始化按钮,自动创建数据表和默认数据

3. 启动服务

bash
go run main.go

初始化成功后,重新启动程序,访问 http://127.0.0.1:9999/login,使用默认账号 admin / 密码 admin 登录。

主要功能模块

仪表盘

展示项目信息、内存使用、硬盘状态、CPU 负载等系统监控数据。

代码生成器

  • 生成数据表 CURD:选择数据表后自动生成增删改查代码
  • 生成控制器方法:通过接口定义生成方法骨架,便于分工开发

授权调用方

  • 管理 API 调用方身份
  • 配置接口访问权限
  • 查看调用方使用说明

系统管理

  • 管理员:账号管理、禁用/启用、密码重置、菜单授权
  • 菜单管理:后台侧边栏菜单配置

查询小助手

  • 查询缓存:查看 Redis 缓存内容和有效期
  • 查询数据:支持 SQL 语句执行和分析

实用工具箱

  • 服务升级:版本升级指导
  • Hashids:ID 加密传输
  • 调用日志:查看最近 100 条接口调用记录
  • 接口文档:Swagger 文档查看
  • 接口指标:Prometheus 监控指标
  • GraphQL:查询和更新操作
  • WebSocket:实时通讯测试

项目结构

text
go-gin-api/
├── assets/              # 静态资源
├── cmd/                 # 命令行工具
├── configs/             # 配置文件
├── deployments/         # 部署配置
├── docs/                # 文档
├── internal/            # 内部代码
│   ├── api/            # API 接口层
│   ├── logic/          # 业务逻辑层
│   ├── model/          # 数据模型层
│   ├── repository/     # 数据访问层
│   └── service/        # 服务层
├── pkg/                 # 公共包
├── scripts/             # 脚本文件
└── web/                 # 前端界面

轻量版:gin-api-mono

针对只需要 API 接口和 CURD 操作的开发者,作者还提供了 gin-api-mono 轻量版:

  • 去除了界面和集成功能
  • 代码更加简洁轻量
  • 性能和稳定性优化
  • 适合快速上手和二次开发

注意事项

⚠️ 建议供参考学习,线上使用请谨慎!

  1. 生产环境部署前请修改默认账号密码
  2. 建议根据业务需求调整框架限制和约束
  3. 关注项目更新,及时同步安全补丁

相关资源

总结

go-gin-api 是一个功能完善、设计合理的 Go 语言 API 开发框架,特别适合:

  • 需要快速搭建后台管理系统的团队
  • 希望规范开发流程的中小型项目
  • 学习 Go 语言企业级开发实践的开发者

框架通过合理的约束和丰富的内置功能,帮助开发者专注于业务逻辑,提高研发效率。

分享: