Skip to content

epkgs/gin-admin

Repository files navigation

Gin Admin Template

该模板提供了构建企业级Web应用所需的核心功能,包括用户认证、权限管理、数据库操作、缓存等。

功能特性

  • 提供基于 Gin 框架的轻量级项目模板
  • 使用简洁的手动依赖注入,实现清晰的代码结构
  • 集成 GORM 进行 ORM 映射和数据库操作
    • 支持 PostgreSQL
    • 支持 MySQL
    • 支持 SQLite
  • 集成 Viper 进行配置管理
  • 提供常用 Gin 中间件和工具
    • 多语言中间件:支持多语言,使用 epkgs/i18n 模块实现
    • 跨域中间件:处理 API 跨域请求,实现 CORS 支持
    • JWT 解析中间件:从请求中解析并验证 JWT Token,用于 API 身份认证
    • Trace 中间件:记录请求的 Trace ID,用于请求链路追踪
    • 日志中间件:记录请求的日志,使用 zap 模块实现
    • Copy Body 中间件:复制请求的 Body 内容,用于日志记录
    • Auth 中间件:处理用户认证,基于 jwt 封装实现
    • Rate Limiter 中间件:实现请求限流
    • Casbin 中间件:实现权限控制,基于 casbin 封装实现
    • Prometheus 中间件:实现 Prometheus 监控,记录请求次数、错误次数、响应时间等
  • 国际化 (i18n) 支持
    • 请求参数 lang 指定语言
    • 自动识别 cookie 中的语言
    • 基于请求 Accept-Language 头自动选择语言
  • 使用 Cobra 命令行框架,提供清晰的子命令结构
  • Swagger 文档生成

架构设计

项目采用简化的架构设计,使用手动依赖注入,实现了清晰的代码结构:

目录结构

├── cmd                 # 命令行工具
├── configs             # 配置文件
├── internal
│   ├── api             # API控制器
|   ├── app             # App 主框架
│   │   └── modules     # App模块
|   ├── config          # 配置解析
|   ├── dao             # 业务对象,由 Gorm Gen 生成
|   ├── dto             # 数据传输对象,用于接收前端参数
|   ├── errorx          # 错误处理
|   ├── middleware      # 中间件
|   ├── model           # 持久化对象,对应数据库实体
|   ├── service         # 业务逻辑层
|   ├── swagger         # API文档
|   └── types           # 接口定义
├── locales             # 多语言文件
├── pkg                 # 公共组件库
├── scripts             # 脚本文件
└── test                # 测试文件

快速开始

环境要求

  • Go 1.18+

安装

# 克隆项目
git clone git@github.com:epkgs/gin-admin.git

# 进入项目目录
cd gin-admin

# 安装依赖包
go mod tidy

运行参数

  • start: 启动服务器
    • -c, --config: 指定配置文件路径
    • -d, --deamon: 运行为守护进程
  • stop: 停止服务器
  • version: 显示版本信息

i18n 测试

# 启动服务器
go run . start

# 英文测试
curl -X POST "http://localhost:8080/api/v1/auth/login" \
     -H "Accept-Language: en-US" \
     -H "Content-Type: application/json" \
     -d '{"username": "test", "password": "wrong"}'

# {"code":401,"message":"incorrect username or password","data":null}

# 中文测试
curl -X POST "http://localhost:8080/api/v1/auth/login" \
     -H "Accept-Language: zh_CN" \
     -H "Content-Type: application/json" \
     -d '{"username": "test", "password": "wrong"}'

# {"code":401,"message":"用户名或密码错误","data":null}

许可证

MIT License

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages