Skip to content

18211167516/Go-Gin-Api

Repository files navigation

Go-Gin-Api

基于 Gin 进行模块化设计的 API 框架,封装了常用功能,操作简单,致力于进行快速的业务研发。比如,jwt 签名验证、zap 日志收集、panic 异常捕获、swagger 文档生成、viper 配置文件解析、gorm 数据库组件、v2.0支持后台管理、casbin权限管理可支持按钮级权限,使用Light Year Admin 模板、支持命令工具生成Model、初始化数据库 等等

项目文档

在线文档 在线文章

1 项目简介

1.1 项目介绍

个人爱好,业务编码,喜欢的给个star

2 使用说明

- golang版本 >= v1.16
  1. 下载
  • 使用git克隆本项目
    git clone https://github.com/18211167516/Go-Gin-Api.git
  1. cd到cmd目录,编译 然后执行cmd.exe initdb 当然了你要先创建数据库

  2. 登录后台

账号:admin
密码:Admin123
  1. 贡献指南
  • issue 仅用于提交 Bug 或 Feature 以及设计相关的内容,其它内容可能会被直接关闭。
  • pull Request 请先 fork 一份到自己的项目下,不要直接在仓库下建分支。
  • commit 信息要以[文件名]: 描述信息 的形式填写,例如 README.md: fix xxx bug。
  • 确保 PR 是提交到 dev 分支,而不是 master 分支。
  • 如果是修复 bug,请在 PR 中给出描述信息。

2.1 swagger自动化API文档

2.1.1 安装 swagger

# 启用 Go Modules 功能
go env -w GO111MODULE=on 
# 配置 GOPROXY 环境变量
go env -w GOPROXY=https://goproxy.io,direct

# 使用如下命令下载swag
go get -u github.com/swaggo/swag/cmd/swag

2.1.2 生成API文档

swag init

执行上面的命令后,server目录下会出现docs文件夹,登录http://localhost:8080/swagger/index.html,即可查看swagger文档

2.2 热编译

go get github.com/pilu/fresh

进入项目执行

fresh

配置文件 是runner.conf

2.3 工具

2.3.1 mysql转model

cd cmd
go build . 

./cmd.exe make:model 

详细命令
./cmd.exe make:model -h

2.3.2 初始化数据

生成基础表和数据

cd cmd
go build . 

./cmd.exe initdb 

2.3.3 make:mysql

根据model生成数据表

./cmd.exe make:model -t=Test

2.3.4 make:command

生成command命令

生成make-service命令:同时会将-转成:
./cmd.exe make:command -n=make-service

2.3.5 make:service

生成service

根据app/models/test Test
生成默认文件 TestService.go
./cmd.exe make:service -m=test/Test 
生成自定义文件 testSerive.go
./cmd.exe make:service -m=test/Test -f=testService
生成到自定义目录
./cmd.exe make:service -m=test/Test -p=test
会把-转成:
./cmd.exe make:command -n=make-service

3 技术选型

  • Gin快速搭建基础restful风格API,Gin是一个go语言编写的Web框架
  • 数据校验 go-playground gin框架内置,已支持错误信息转中文
  • 数据库:采用MySql(5.6.44)版本,使用gorm实现对数据库的基本操作。
  • API文档:使用Swagger构建自动化文档。
  • 热重启HotStart,我自己写的一个
  • 配置文件 使用viper解析
  • 日志:使用logrus实现日志记录。
  • 权限:使用casbin实现按钮级权限。
  • 命令行工具:自建命令行支持mysqlModel、生成初始化数据。

4. 项目架构

4.1 目录结构

    ├─app  	     (项目核心目录)
    |  ├─controller     (控制器)
    |  ├─middleware     (中间件)
    |  ├─models         (数据结构层)
    |  ├─request        (数据请求层,定义特殊请求结构体以及数据校验)
    |  ├─request        (数据展示层定义结构体)
    |  ├─services       (服务层)
    ├─config            (配置包)
    ├─cron              (定时脚本)
    ├─core  	        (內核)
    ├─docs  	        (swagger文档目录)
    ├─global            (全局变量)
    ├─initialize         (初始化)
    ├─log                (日志文件)
    ├─routes            (路由)
    ├─static            (静态文件包括config目录)
    ├─templates         (模板)
    ├─tests             (测试)
    └─tool	            (工具)

4.2 组件支持

  1. 支持Swagger接口文档生成
  2. 支持jwt鉴权
  3. 支持zap 日志
  4. 支持viper 配置文件解析
  5. 支持go1.6.0 go:embed特性,打包包含静态文件
  6. 支持gorm 数据库组件、支持读写分离,数据库主从
  7. 支持web界面 使用 Light Year Admin 模板
  8. 支持多角色的RBAC权限控制(支持到按钮级),使用casbin
  9. cmd目录下支持生成model、支持数据库初始化
  10. 支持热编译fresh

联系作者

my

项目图片

login

login

login