swag工具介绍和安装
Swag是一款可以将Go的注释转换为Swagger2.0格式文档的工具,生成接口文档用到的注释需要按照swag要求的格式书写。
使用go install方式下载安装swag
$ go install github.com/swaggo/swag/cmd/swag@latest
也可以从github的release页面下载编译好的二进制文件,以1.8.10版本为例:
$ wget https://github.com/swaggo/swag/releases/download/v1.8.10/swag_1.8.10_Linux_x86_64.tar.gz
$ tar zxvf swag_1.8.10_Linux_x86_64.tar.gz
$ chmod +x ./swag
$ mv swag /usr/local/bin
在包含main.go文件的项目根目录运行swag init将会解析注释并生成文件(docs文件夹),修改对应注释后再次运行swag ini即可:
swag init
使用swag fmt可以格式化SWAG注释:
swag fmt
符合swag要求的API通用注释写法
在main.go的main方法添加API通用注释
// @title account API
// @version 1.0
func main() {
//...
}
更多通用注释字段说明和示例:
符合swag要求的具体API注释
在接口的handler方法中添加具体的API注释
// Login godoc
// @Summary 登录
// @Schemes https
// @Description 登录
// @Tags account
// @accept json
// @Produce json
// @Param account body param.LoginReq true "login"
// @Success 200 {object} param.JSONResult{data=param.LoginRes}
// @Router /user/login [post]
func Login(g *gin.Context) {
//...
}
参数注释和返回注释支持结构体,本例中用到的结构体在param包下面,内容如下
// JSONResult response body结构
type JSONResult struct {
Code int `json:"code" binding:"required"`
Data interface{} `json:"data" binding:"required"`
Msg string `json:"msg" binding:"required"`
}
// LoginReq 登录接口入参
type LoginReq struct {
Email string `json:"email" binding:"required,min=6,max=50"` // 邮箱
Password string `json:"Password" binding:"required,min=8,max=15"` // 密码
}
// LoginRes 登录接口返回参数
type LoginRes struct {
Token json:"token"` // token
}
更多注释字段说明:
生成接口文档
按照swag要求写好注释后,执行如下命令生成文档
swag init
会在根目录生成docs文件夹,里面包含swagger.json,、swagger.yaml和doc.go三个文件。
swag的使用方法比较简单直观,更多信息可以参考https://github.com/swaggo/swag/blob/master/README_zh-CN.md。