基于gin框架实现的脚手架工具ginhelper用法介绍
ginhelper是用于gin框架快速开发的辅助工具,支持monorepo方式,使用方法如下:
安装ginhelper
go install github.com/5bug/ginhelper@latest
等待安装完成后,查看使用帮助提示:
➜ ~ ginhelper -h Usage: ginhelper [command] Available Commands: completion Generate the autocompletion script for the specified shell help Help about any command new create an app template update update app api and service Flags: -h, --help help for ginhelper -v, --version version for ginhelper Use "ginhelper [command] --help" for more information about a command.
快速开发
初始化工程
➜ ~/codes mkdir test ➜ ~/codes cd test ➜ ~/codes/test ginhelper new ? What is project name ? github.com/5bug/test ? What is app name ? demo1
创建好的工程目录为:
➜ ~/codes/test tree . . ├── cmd │ └── demo1 │ └── main.go ├── go.mod ├── internal │ └── demo1 │ ├── api │ │ ├── api.go │ │ ├── handlers.go │ │ └── router.go │ ├── conf │ │ └── conf.go │ └── service │ ├── api.go │ └── service.go └── pkg ├── conf │ └── conf.go ├── rest │ ├── jwt.go │ ├── page.go │ ├── rest.go │ └── server.go └── storage └── storage.go 11 directories, 14 files
定义api文件
这里api定义使用纯go代码实现,通过注解来定义路由、请求方法、是否需要认证,具体注解说明如下:
@Router: 路由定义 /xxx [请求方法(get post put delete head)]
@Auth: 是否需要认证 true/false
api定义文件纯Go语法,使用成本低!例如在internal/demo1/api/目录下定义api文件user.go,内容如下:
package api // UserRequest user request // @Router /user [get] // @Auth false type UserRequest struct { ID int `json:"id" binding:"required"` } // UserReply user reply type UserReply struct { ID int `json:"id"` Name string `json:"name"` Sex int `json:"sex"` Email string `json:"email"` }
自动生成代码
根据上面定义的api文件自动生成代码,上面的api定义在demo1的app里面,所以更新方法为:
ginhelper update -a demo1
这个时候api定义里的/user相关的路由请求代码自动生成好了,只需要在internal/demo1/service/user.go里实现自己的业务逻辑即可
编译运行
go mod tidy ... go run cmd/demo1/main.go
开源地址
这里仅仅实现了基于gin框架的自动生成繁琐代码的方法,对于简单的服务来说能一定程度上提效,但对于成熟的脚手架工具来说远远还不够,代码开源地址为: