资讯专栏INFORMATION COLUMN

SQL+RESTful开源GO脚手架工具ginbro(gin and gorm's bro

sewerganger / 3223人阅读

摘要:安装添加到环境变量或者脚手架工具因为工作中非常多次的使用数据库来开发程序所以开发一个语言的的脚手架工具代码来源的代码迭代自二进制化工具全家桶代码二进制化成代码编译的时候变成二进制运行的时候直接加载到内存中同时和在一个域名下不需要再中配置或

安装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"
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 脚手架工具 工作原理

通过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/POST/GET/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/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服务 工作原理

遍历编译好的前端代码目录

使用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/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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32404.html

相关文章

  • Gin实践 连载二 搭建Blog API&#039;s(一)

    摘要:介绍和初始化项目初始工作区首先,我们需要增加一个工作区路径用于我们的项目。将你新的工作区加入到中的环境变量中,并在新工作区中,建立三个目录。 Gin搭建Blog APIs (一) 项目地址:https://github.com/EDDYCJY/go... 思考 首先,在一个初始项目开始前,大家都要思考一下 各种的程序配置写在代码中,好吗 API的错误码硬编在程序中,合适吗 db句柄谁...

    chuyao 评论0 收藏0
  • Gin实践 连载四 搭建Blog API&#039;s(三)

    摘要:编写的项目地址定义接口本节编写文章的逻辑,我们定义一下接口吧获取文章列表获取指定文章新建文章更新指定文章删除指定文章编写路由逻辑在的版本下,新建文件,写入内容获取单个文章获取多个文章新增文章修改文章删除文章我们打开下的文件,修改文件内容为 编写Article的APIs、Models 项目地址:https://github.com/EDDYCJY/go... 定义接口 本节编写文章的逻辑...

    heartFollower 评论0 收藏0
  • Gin实践 连载三 搭建Blog API&#039;s(二)

    摘要:在获取标签列表接口中,我们可以根据来筛选查询条件,分页的步长可通过进行配置,以的组合返回达到分页效果。 编写Tag的APIs、Models 项目地址:https://github.com/EDDYCJY/go... 本大节将会涉及到以下知识点: gin:Golang的一个微框架,性能极佳 beego-validation:本节采用的beego的表单验证库,中文文档 gorm,...

    Ilikewhite 评论0 收藏0
  • Gin实践 连载十 定制 GORM Callbacks

    摘要:原文地址定制项目地址本身是由回调驱动的,所以我们可以根据需要完全定制,以此达到我们的目的注册一个新的回调删除现有的回调替换现有的回调注册回调的顺序在中包含以上四类,我们结合项目选用替换现有的回调来解决一个小痛点问题在目录下,我们包含和两个文 GORM itself is powered by Callbacks, so you could fully customize GORM as...

    RyanHoo 评论0 收藏0
  • Gin实践 连载五 使用JWT进行身份校验

    摘要:原文地址使用进行身份校验在前面几节中,我们已经基本的完成了的编写但是,还存在一些非常严重的问题,例如,我们现在的是可以随意调用的,这显然还不够完美,是有问题的那么我们采用的方式来简单解决这个问题项目地址下载依赖包首先,我们下载的依赖包 原文地址:使用JWT进行身份校验 在前面几节中,我们已经基本的完成了APIs的编写 但是,还存在一些非常严重的问题,例如,我们现在的API是可以随意调...

    source 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<