安装swag命令
1
| go get -u github.com/swaggo/swag/cmd/swag
|
注意:
确保提前配置了Go环境.
1
2
3
4
5
6
| # Go
GOPATH=$HOME/go
GOBIN=$GOPATH/bin
PATH="$GOBIN:$PATH"
GOPROXY=https://goproxy.io
export GOPATH GOBIN PATH GOPROXY
|
验证是否安装成功:
安装gin-swagger
1
2
| go get -u github.com/swaggo/gin-swagger
go get -u github.com/swaggo/files
|
为swagger添加访问路由
路由文件: router/router.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| package router
import (
"net/http"
"github.com/gin-gonic/gin"
ginSwagger "github.com/swaggo/gin-swagger"
"github.com/swaggo/gin-swagger/swaggerFiles"
_ "yourapp/docs" // for swagger
)
func Group() {
runmode := config.Conf().Runmode
switch runmode {
case "release":
gin.SetMode(gin.ReleaseMode)
case "test":
gin.SetMode(gin.TestMode)
case "debug":
gin.SetMode(gin.DebugMode)
default:
panic("unknown runmode")
}
router := gin.New()
if runmode == "debug" {
router.Use(gin.Logger())
}
router.Use(gin.Recovery())
// 只在debug和test模式下启用swagger
if runmode == "debug" || runmode == "test" {
// NOTE: execute `swag init` in project root dir after updating docs.
// path: /doc/index.html
router.GET("/doc/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
}
...
}
|
写文档注释
为main
函数写文档注释: main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| // @title xxx管理系统 API
// @version 0.1
// @description ### 项目功能:
// @description - xxx
// @description - xxx
// @contact.name API维护者
// @contact.url http://www.swagger.io/support
// @contact.email i@sre.im
// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
// @host xxx.sre.im:8080
// @BasePath /v1/xxx
func main() {
...
|
为其他API
方法写文档注释:
1
2
3
4
5
6
7
8
9
10
11
12
| // @Summary xxx
// @Description xxx
// @Tags idcs
// @Accept json
// @Produce json
// @Param id path uint true "2"
// @Param idccode query string false "shxx"
// @Param billmethod query string false "95"
// @Success 200 {string} string
// @Router /idcs/{id} [put]
func UpdateIDC(c *gin.Context) {
...
|
Param
的类型有:
1
2
3
4
5
| query
path
header
body
formData
|
Param
的数据类型有:
1
2
3
4
5
| string (string)
integer (int, uint, uint32, uint64)
number (float32)
boolean (bool)
user defined struct
|
生成文档注释
在项目根目录下执行:
会自动生成如下目录和文件:
1
2
3
4
| docs/
├── docs.go
├── swagger.json
└── swagger.yaml
|
每次文档有更新, 都需要重新执行一次:
访问swagger在线API文档
编译项目并运行后, 访问:
1
| http://localhost:8080/swagger/index.html
|
官方文档
https://github.com/swaggo/swag/blob/master/README.md
https://swaggo.github.io/swaggo.io/declarative_comments_format/general_api_info.html