gin开发环境搭建之自动重启&swagger

前言

和当初选择python的flask框架一样,在学习golang+web的时候选择同样了相对轻量的gin框架,然而在实际学习开发中,gin并没有那么好用,原因在于没有自动重载和swagger文档,好在都有解决方案,参考多个文档之后,实现了自动重载并更新swagger文档的功能。

Swagger文档

go get -u github.com/swaggo/swag/cmd/swag

首先安装swag命令,会下载在GOPATH中的bin目录下swag可执行文件,如果没有GOPATH没有配置到环境变量中,可以做一个软链接

ln -s <yourpath>/swag /usr/local/bin/swag

在gin项目根目录下执行

swag init

会生成docs文件夹,文件夹下有swagger.json,这就是我们要的文档。

在配置路由的方法中,加入swagger的路由配置

package routers

import (
	"github.com/gin-gonic/gin"
	swaggerFiles "github.com/swaggo/files"
	ginSwagger "github.com/swaggo/gin-swagger"
)

func AddSwaggerRouter(r *gin.Engine) {
	r.StaticFile("swagger.json", "./docs/swagger.json")
	url := ginSwagger.URL("http://127.0.0.1:8080/swagger.json")
	r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, url))
}

将docs目录下的swagger.json文件配置成静态文件,然后将其静态文件对应的url传入到swagger路由中,这样swagger页面读取json文件就是我们指定的文件,官方文档中的配置指定的url是“/swagger/doc.json”,有一定的滞后,所以选定自己的swagger.json

这个时候访问http://127.0.0.1:8080/swagger/index.html就可以看到swagger界面。至于文档的生成规则另行百度。。。。。

Air自动重载

go get -u github.com/cosmtrek/air

安装方式和上面的swag命令相同,为了实现自动重载和自动更新swagger文档的功能,需要我们自己进行一些配置文件

root = "."
tmp_dir = "tmp"

[build]
cmd = "go build -o ./tmp/main ./main.go"
bin = "tmp/main"
full_bin = "APP_ENV=dev APP_USER=air ./tmp/main"
include_ext = ["go"]
exclude_dir = ["vendor", "docs"]
exclude_file = []
stop_on_error = true
log = "air_error.log"

[log]
time = true

[color]
main = "magenta"
watcher = "cyan"
build = "yellow"
runner = "green"

[misc]
clean_on_exit = true

在gin项目的根目录下创建 .air.conf文件,并键入上述内容,会在main.go的同级目录下创建tmp文件用于存储构建之后的可执行文件。有一点注意的是exclude_dir的配置,其中docs是swag init命令的产生的swagger.json文件

然后是每次启动时,更新swagger.json文件,在main.go中的init函数中执行swag init系统命令

cmd := exec.Command("swag", "init")
err := cmd.Run()
if err != nil {
	panic(err)
}
fmt.Println("swagger.json生成成功")

如果air的配置文件没有忽略docs,会一直重启服务,更新docs下的文件,再重启死循环

启动的时候就直接在项目的根目录启动,用air命令,会直接找到统计目录下的.air.conf配置文件,当然也可以自行指定配置文件

到这里,基本上就已经完成了gin开发环境的搭建。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值