1、Swagger介绍
Swagger是基于标准的 OpenAPI 规范进行设计的,本质是一种用于描述使用json表示的Restful Api的接口描述语言,只要照着这套规范去编写你的注解或通过扫描代码去生成注解,就能生成统一标准的接口文档和一系列 Swagger 工具。Swagger包括自动文档,代码生成和测试用例生成。
2、安装Swagger
2.1、安装
- 1.70 之前:
go get -u github.com/swaggo/swag/cmd/swag 
- 1.70 之后:
go install github.com/swaggo/swag/cmd/swag 
需要把安装目录 暴露出来
1
   | export $PATH:$GOPATH/bin/
 
  | 
 
2.2、检测是否安装成功
1 2 3 4 5 6
   | $ swag -v swag version v1.8.12 ``` 
 
 
 
 
  | 
 
$ go get -u -v github.com/swaggo/gin-swagger
$ go get -u -v github.com/swaggo/files
$ go get -u -v github.com/alecthomas/template
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
   | 
  # 3、使用
  使用 gin-swagger 为你的代码自动生成接口文档,一般需要下面三个步骤:
  1.  按照swagger要求给接口代码添加声明式注释。 2.  使用swag工具扫描代码自动生成api接口文档数据。 3.  使用gin-swagger渲染在线接口文档页面。
  ## 3.1、添加注释
  go-swapper 注解规范说明:
  注:注解详情可参见官网文档[Swagger Documentation](https://swagger.io/docs/)
  | 注解      | 描述 | |----------| --- | | @Summary | 摘要 | | @Produce | API 可以产生的 MIME 类型的列表,MIME 类型你可以简单的理解为响应类型,例如:json、xml、html 等等 | | @Param   | 参数格式,从左到右分别为:参数名、入参类型、数据类型、是否必填、注释 | | @Success | 响应成功,从左到右分别为:状态码、参数类型、数据类型、注释 | | @Failure | 响应失败,从左到右分别为:状态码、参数类型、数据类型、注释 | | @Router  | 路由,从左到右分别为:路由地址,HTTP 方法 |
  示例demo:
 
  ```go package main import (     "github.com/gin-gonic/gin"     "github.com/swaggo/files"     ginSwagger "github.com/swaggo/gin-swagger"     _ "github/mwqnice/swag/docs" // 千万不要忘了导入把你上一步生成的docs )
 
  // URL 信息 // @Summary  获取单个文章 // @Produce  json // @Param    id path int true "文章ID" // @Success  200 {object} Article "成功" // @Failure  400 {object} string "请求错误" // @Failure  500 {object} string "内部错误" // @Router   /api/v1/articles/{id} [get] func (a Article) Get(c *gin.Context) { }
 
  // 文档信息 // 添加注释以描述信息 // @title           Swagger Example API // @version         1.0 // @description     This is a sample server celler server. // @termsOfService  http://swagger.io/terms/ // @contact.name    API Support // @contact.url     http://www.swagger.io/support // @contact.email   support@swagger.io // @license.name    Apache 2.0 // @license.url     http://www.apache.org/licenses/LICENSE-2.0.html // @host            localhost:8080 // @BasePath        /api/v1 // @securityDefinitions.basic  BasicAuth func main() {      r := gin.Default()         c := controller.NewController()     v1 := r.Group("/api/v1")     {         accounts := v1.Group("/accounts")         {             accounts.GET(":id", c.ShowAccount)         }    //... } r.Run(":8080")} ``` 
 
  ## 3.2、生成接口文档数据
  *   格式化swag注解:`$ swag fmt` 
  *   在项目根目录执行以下命令,使用swag工具生成接口文档数据:`$ swag init` 
  执行完上述命令后,如果你写的注释格式没问题,此时你的项目根目录下会多出一个docs文件夹。
 
  | 
 
./docs
├── docs.go
├── swagger.json
└── swagger.yaml
## 3.3、引入 gin-swagger 渲染文档数据
然后在项目代码中注册路由的地方按如下方式引入 gin-swagger 相关内容:
```go
import (
    "github.com/gin-gonic/gin"
    "github.com/swaggo/files"  // 这个包
    ginSwagger "github.com/swaggo/gin-swagger"  // 这个包
    _ "github/mwqnice/swag/docs" // 千万不要忘了导入把你上一步生成的docs
)
//添加swagger访问路由
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
启动项目,在浏览器中输入地址:http://127.0.0.1:8088/swagger/index.html