Golang Go语言 SQL+RESTful API 脚手架工具

发布于 1周前 作者 sinazl 来自 Go语言

Golang Go语言 SQL+RESTful API 脚手架工具

ginbro(gin and gorm’s brother)

安装 felix 可执行程序

git clone https://github.com/dejavuzhou/felix
cd felix
go mod download

go install echo “添加 GOBIN 到 PATH 环境变量”

echo “或者”

go get github.com/dejavuzhou/felix

echo “go build && ./felix -h”

或者下载编译好的文件 https://github.com/dejavuzhou/felix/releases/tag/v0.2

What is Ginbro

  • Gin 脚手架工具:因为工作中非常多次的使用 mysql 数据库 + gin + GORM 开发 RESTful API 程序,所以开发一个 Go 语言的 RESTful APIs 的脚手架工具
  • Ginbro 代码来源:Ginrbo 的代码迭代自github.com/dejavuzhou/ginbro
  • SPA 二进制化工具:vuejs 全家桶代码二进制化成 go 代码,编译的时候变成二进制,运行的时候直接加载到内存中,同时和 gin API 在一个域名下不需要再 nginx 中配置 rewrite 或者跨域,加快 API 访问速度

功能一:Gin+GORM_SQL RESTful 脚手架工具

工作原理

  1. 通过 cobra 获取命令行参数
  2. 使用 sql 参数连接数据库
  3. 获取数据库表的名称和字段类型等数据库
  4. 数据库边的表名和字段信息,转换成 Swagger doc 规范字段 和 GORM 模型字段
  5. 使用标准库 text/template 生成 swagger.yaml, GORM 模型文件, GIN handler 文件 ...
  6. 使用 go fmt ./... 格式化代码
  7. 使用标准库archive/zip打包*.go config.toml ...代码,提供 zip 文件下载(命令行模式没有)

支持数据库大多数 SQL 数据库

  • mysql
  • SQLite
  • postgreSQL
  • mssql(TODO:: sqlserver)

ginbro 生成 app 代码包含功能简介

  • 每一张数据库表生成一个 RESTful 规范的资源(GET-pagination/POST/GET-one/PATCH/DELETE)
  • 支持 API-json 数据分页-和总数分页缓存,减少全表扫描
  • 支持 golang-内存单机缓存
  • 支持gin autotls
  • 前端代码和 API 公用一个服务,减少跨域 OPTIONS 的请求时间和配置时间,同时完美支持前后端分离
  • 开箱支持 jwt-token 认证和 Bearer Token 路由中间件
  • 开箱即用的 logrus 数据库
  • 开箱即用的 viper 配置文件
  • 开箱即用的 swagger API 文档
  • 开箱即用的定时任务系统

项目演示地址

felix sshw 网页 UI 演示地址 用户名和密码都是 admin

生成 swagger API 交互文档地址 http://ginbro.mojotv.cn/swagger/

msql 生成 go 代码地址

bili 命令行演示视频地址

命令行参数详解

[root[@ericzhou](/user/ericzhou) felix]# felix ginbro -h
generate a RESTful APIs app with gin and gorm for gophers

Usage: felix ginbro [flags]

示例: felix ginbro -a dev.wordpress.com:3306 -P go_package_name -n db_name -u db_username -p ‘my_db_password’ -d ‘~/thisDir’

Flags: –authColumn string 使用 bcrypt 方式加密的用户表密码字段名称 (default “password”) –authTable string 认知登陆用户表名称 (default “users”) -a, --dbAddr string 数据库连接的地址 (default “127.0.0.1:3306”) -c, --dbChar string 数据库字符集 (default “utf8”) -n, --dbName string 数据库名称 -p, --dbPassword string 数据库密码 (default “password”) -t, --dbType string 数据库类型: mysql/postgres/mssql/sqlite (default “mysql”) -u, --dbUser string 数据库用户名 (default “root”) -d, --dir string golang 代码输出的目录,默认是当前目录 (default “.”) -h, --help 帮助 -l, --listen string 生成 go app 接口监听的地址 (default “127.0.0.1:5555”) –pkg string 生成 go app 包名称(go version > 1.12) 生成 go.mod 文件, eg: ginbroSon

[root@ericzhou felix]#

web 界面

对于那些喜欢使用命令行的同学,你们可以选择使用 web 界面来操作

git clone https://github.com/dejavuzhou/felix
cd felix
go mod download

go install echo “添加 GOBIN 到 PATH 环境变量”

echo “go build && ./felix -h”

echo 打开 Web 界面

felix sshw -h

felix sshw

echo “三秒钟之后会自动帮助你打开浏览器,如果如果你使用的 windows 或者 mac 系统”

1.登陆界面

默认用户名和密码都是 admin

2.填写数据库连接信息

3.配置 app 用户认证的表和字段

4.配置 app 包名称,导出目录和监听地址

5.生成 go 代码

6.下载代码或 cd 者到指定目录

功能二:前端代码二进化,通过 gin 中间件整合到 API 服务

工作原理

  1. 遍历编译好的前端代码目录
  2. 使用archive/zip写入到bytes.buffer
  3. 格式化输出层 字符串常量的 go 文件中
  4. 创建 gin 中间件,加载字符串处理,解析出文件
  5. 中间件 path 如果命中文件,这 http 输出文件,否在交给下一个 handler

参数说明


$ felix ginbin -h
示例: felix ginbin -s dist -p staticbin
Usage:
  felix ginbin [flags]

Flags: -c, --comment string 代码注释说明. -d, --dest string 出输 go 代码到目录. (default “.”) -f, --force 是否覆盖输出. (default true) -h, --help 帮助 -m, --mtime 是否修改文件时间戳. -p, --package string 输出的包名称. (default “felixbin”) -s, --src string 前端静态文件的目录地址. (default “dist”) -t, --tags string go 语言的标签. -z, --zip 是否 zip 压缩.

使用说明:生成的二进制化 go 文件

vuejs/dist 使用 felix ginbin 生成的 go 文件 https://github.com/dejavuzhou/felix/blob/master/staticbin/gin_static.go

gin 路由应用二进制化的前端代码中间件如下:

import "github.com/dejavuzhou/felix/staticbin" //导入 felix ginbin 生成的二进制化包

https://github.com/dejavuzhou/felix/blob/master/ssh2ws/ssh2ws.go

	r := gin.Default()
	r.MaxMultipartMemory = 32 << 20
//sever static file in http's root path
binStaticMiddleware, err := staticbin.NewGinStaticBinMiddleware("/")
if err != nil {
	return err
}
r.Use(binStaticMiddleware)

引用和代码仓库

dejavuzhou/felix Golang 工具集

felix ginbro 命令逻辑代码目录

前端代码二进制化成 gin 中间件代码

文章来源 MojoTech


更多关于Golang Go语言 SQL+RESTful API 脚手架工具的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

7 回复

后端要啥脚手架…

更多关于Golang Go语言 SQL+RESTful API 脚手架工具的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html




可以通过导入 sql 数据库连接 生成 go 项目的代码

其实我这个开源代码 还包含 ssh 跳板机 ssh 命令行工具, …

哇 vue 在线 ssh 命令行工具吗? 这个好
谢谢楼主

提供命令行工具和 web UI(vuejs + xterm.js)

感谢 不过现在有一个问题: go mod 中一个包第三方包版本有问题 https://github.com/ugorji/go/issues/299 导致 ginbro web ui 不能到达最后一步, 但是代码可以生成

<br>C:\ginbroRock4&gt;go fmt ./...<br>build ginbroSon: cannot load <a target="_blank" href="http://github.com/ugorji/go/codec:" rel="nofollow noopener">github.com/ugorji/go/codec:</a> ambiguous import: found <a target="_blank" href="http://github.com/ugorji/go/codec" rel="nofollow noopener">github.com/ugorji/go/codec</a> in multiple modules:<br> <a target="_blank" href="http://github.com/ugorji/go" rel="nofollow noopener">github.com/ugorji/go</a> v1.1.4 (C:\Users\xxx\go\pkg\mod\<a target="_blank" href="http://github.com" rel="nofollow noopener">github.com</a>\ugorji\<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="20474f6056110e110e14">[email&nbsp;protected]</a>\codec)<br> <a target="_blank" href="http://github.com/ugorji/go/codec" rel="nofollow noopener">github.com/ugorji/go/codec</a> v0.0.0-20181209151446-772ced7fd4c2 (C:\Users\xx\go\pkg\mod\<a target="_blank" href="http://github.com" rel="nofollow noopener">github.com</a>\ugorji\go\<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="52313d3637311224627c627c627f6062636a6360626b6367636666647f6565603137366534">[email&nbsp;protected]</a><br>d4c2)<br><br>

针对您提到的Golang Go语言 SQL+RESTful API 脚手架工具,以下是一些专业回复:

在Go语言生态中,确实存在多个用于生成SQL+RESTful API脚手架的工具,这些工具能够极大地提高开发效率。其中,ginbro(gin and gorm’s brother)便是一个广受欢迎的开源脚手架工具。

ginbro基于Gin框架和GORM ORM框架构建,能够快速生成符合RESTful规范的API代码。它支持多种数据库类型,如MySQL、PostgreSQL、SQLite等,并能够根据数据库表结构自动生成Swagger文档、GORM模型文件和GIN处理器文件等。此外,ginbro还提供了开箱即用的JWT认证、日志系统、配置文件和定时任务等功能,进一步简化了开发流程。

除了ginbro之外,还有其他一些脚手架工具也值得尝试,它们可能具有不同的特性和优势,开发者可以根据自身需求选择合适的工具。

总之,使用Go语言SQL+RESTful API脚手架工具能够显著提高开发效率,加快项目交付速度。如果您对ginbro或其他脚手架工具有更多疑问或需求,建议查阅相关文档或社区资源以获取更多信息。

回到顶部