问题复现
为gin项目增加swagger能力,方便管理api
步骤:
按照官方文档进行 https://github.com/swaggo/swag/blob/master/README_zh-CN.md
//安装swag
go install github.com/swaggo/swag/cmd/swag@latest
//查看swag版本
swag -v
1.7.9
//初始化
swag init
初始化后发现在doc中是这样的:
var SwaggerInfo_swagger = &swag.Spec{
Version: "1.0",Host: "localhost:9090",BasePath: "",Schemes: []string{
},Title: "swagger",Description: "swagger 示例项目",InfoInstanceName: "swagger",SwaggerTemplate: docTemplate_swagger,
}func init() {
swag.Register(SwaggerInfo_swagger.InstanceName(), SwaggerInfo_swagger)
}
变量名称是SwaggerInfo_swagger,且&swag.Spec 无法导入
环境
swag :1.7.9
go: 1.17.6
os: macOS 12.1
原因
由于需要在同一个doc包中生成两个文档造成的,保留原始 SwaggerInfo 是不可能的,因为当它与新功能一起使用时,代码将根本无法编译。
就是新的功能替代了旧的功能但是之前的没删干净,有了冲突。
解决方法
使用上个版本的swag
下载 1.7.8 swag
go install github.com/swaggo/swag/cmd/swag@1.7.8
使用与发布版本
官方已经在预发布版本 1.7.9-p1 中稍微修复了这个问题,如果你看到这个文章的时候官方已经到正式版 1.7.10 ,则可以使用最新版
下载预发布版本 1.7.9-p1
go install github.com/swaggo/swag/cmd/swag@v1.7.9-p1
使用swag -v 显示的还是 1.7.9
## 如果不行,获取更新包:
go get github.com/swaggo/echo-swagger##以上还是不行,在更新go get github.com/alecthomas/template
参考
官方的 issue:
https://github.com/swaggo/swag/issues/1126
https://github.com/swaggo/swag/issues/1132
gin-swagger使用可以参考我的另一篇博文:
goswagger/gin-swagger使用