SQL+RESTful开源GO脚手架工具ginbro(gin and gorm's brother) 详解 | Go&Rust🦀


本站和网页 https://mojotv.cn/2019/05/22/golang-felix-ginbro 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

SQL+RESTful开源GO脚手架工具ginbro(gin and gorm's brother) 详解 | Go&Rust🦀
All
SQL+RESTful开源GO脚手架工具ginbro(gin and gorm's brother) 详解
Go&Rust🦀
ssh
SQL+RESTful开源GO脚手架工具ginbro(gin and gorm's brother) 详解
5.0
EricZhou
ssh
2019-05-22
安装felix
git clone https://github.com/libragen/felix
cd felix
go mod download
go install
echo "添加 GOBIN 到 PATH环境变量"
echo "或者"
go get github.com/libragen/felix
echo "go build && ./felix -h"
What is Ginbro
Gin脚手架工具:因为工作中非常多次的使用mysql数据库 + gin + GORM 来开发RESTful API程序,所以后开发一个Go语言的RESTful APIs的脚手架工具
Ginbro代码来源:Ginrbo的代码迭代自github.com/libragen/ginbro
SPA二进制化工具:vuejs全家桶代码二进制化成go代码,编译的时候变成二进制,运行的时候直接加载到内存中,同时和gin API在一个域名下不需要再nginx中配置rewrite或者跨域,加快API访问速度
功能一:Gin+GORM_SQL RESTful 脚手架工具
工作原理
通过cobra 获取命令行参数
使用sql参数连接数据库
获取数据库表的名称和字段类型等数据库
数据库边的表名和字段信息,转换成 Swagger doc 规范字段 和 GORM 模型字段
使用标准库 text/template 生成swagger.yaml, GORM 模型文件, GIN handler 文件 …
使用 go fmt ./... 格式化代码
使用标准库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-内存单机缓存缓存
前端代码和API公用一个服务,减少跨域OPTION的请求时间和配置时间,同时完美支持前后端分离
开箱支持jwt-token认证和Bearer Token 路由中间件
开箱即用的logrus数据库
开箱即用的viper配置文件
开箱即用的swagger API 文档
开箱即用的定时任务系统
项目演示地址
felix sshw 网页UI演示地址 用户名和密码都是admin
生成swagger API交互文档地址 http://ginbro.mojotv.cn/swagger/
msql生成go代码地址
bili命令行演示视频地址
命令行参数详解
[root@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/libragen/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服务
工作原理
遍历编译好的前端代码目录
使用archive/zip写入到bytes.buffer中
格式化输出层 字符串常量的 go文件中
创建gin中间件,加载字符串处理,解析出文件
中间件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/libragen/felix/blob/master/staticbin/gin_static.go
gin 路由应用二进制化的前端代码中间件如下:
import "github.com/libragen/felix/staticbin" //导入felix ginbin 生成的二进制化包
https://github.com/libragen/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)
引用和代码仓库
libragen/felix Golang 工具集
felix ginbro 命令逻辑代码目录
前端代码二进制化成gin中间件代码
文章来源 MojoTech
The End
线上交流工具: 在你的terminal中输入 ssh $用户@mojotv.cn
在你的terminal中输入 ssh mojotv.cn hn 查看最新 hacknews
类别和标签
TCP/IP
notes
CPP
CheatSheet
快速入门
快速查询
Jekyll
Github
Python
Golang
Shell
Bash
docker
教程
container
nginx
dockerfile
golang
Spider
钉钉
PhantomJS
RPC
protobuf
gRPC
文件
操作
GUI
reflect
网络请求
代理
http
chromedp
Go进阶
工具
Vim
Javascript
seaweedfs
Raft
raft
Git
Nginx
RESTful
gitbook
node
npm
github
pages
toml
lumen
laravel
cors
markdown
日志
log
mysql
定时任务
php
程序员
Python教程
redis
Dockerhub
Docker
OSS
网络协议
python
运维开发
kali
linux
树莓派
raspberryPi
algorithm
算法
黑客
hack
ssh
xtermjs
shell
context
gcc
g++
jekyll
破解
LDAP
Linux
CSS
ES6
OAuth2
Prometheus
Grafana
Nes
Game
HTTP3
Java
动手
Gateway
网关
Rust笔记
Chinese Tech Blog |
Golang Captcha Open Source Project |
Youtube Channel |
Bilibli Channel |
neochau@gmail.com |
Github Account Mojocn |
鄂ICP备16006181号-4
目录