go-gin中air实现swaager自动重载

135 阅读1分钟

第一步 配置.air.toml文件

exclude_dir = ["assets", "tmp", "vendor", "frontend/node_modules","docs"] // 一定要有docs这个

第二步 监听swagger.json文件

func main() {
	// 返回一个路由引擎
	r := gin.Default()

	r.Use(cors.Default())
	/*
		热加载swagger.json文件
	*/
	r.StaticFile("swagger.json", "./docs/swagger.json")
	url := ginSwagger.URL("http://127.0.0.1:8889/swagger.json")
	// 注册 Swagger UI
	r.GET("/swagger/*any",ginSwagger.WrapHandler(swaggerFiles.Handler,url))
	var user User
	r.GET("/web/:id/:name/:age", user.Bind)

	// 启动服务
	r.Run(":8889")
}

第三步 实现每次热编译都自动构建 在main包中的init函数里加入构建命令

func init() {

	// 构建命令
	cmd := exec.Command("go", "run", "github.com/swaggo/swag/cmd/swag", "init")

	// 设置命令执行的工作目录
	cmd.Dir = "." // 替换为你的项目路径

	// 设置命令的标准输出和错误输出
	cmd.Stdout = os.Stdout
	cmd.Stderr = os.Stderr

	// 执行命令
	err := cmd.Run()
	if err != nil {
		fmt.Println("Error running command:", err)
	}
        
}

以上步骤都结束了你就可以执行 go run github.com\cosmtrek\air 把项目跑起来了实现自动重载了(只建议在开发环境使用生产环境就可以直接删了init函数和监听swagger.json文件的那两行)