一,写之前先要知道swagger是什么
Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。
二,golang如何安装和项目引入swag
## 编写完注释后,使用以下命令安装swag工具:
go get -u github.com/swaggo/swag/cmd/swag
## 在项目根目录执行以下命令,使用swag工具生成接口文档数据。
swag init
## 执行完上述命令后,如果你写的注释格式没问题,此时你的项目根目录下会多出一个docs文件夹。
./docs
├── docs.go
├── swagger.json
└── swagger.yaml
## 在代码接口处引入swag渲染文档数据(以iris框架为例)
import (
"github.com/iris-contrib/swagger/v12"
"github.com/iris-contrib/swagger/v12/swaggerFiles"
)
app.Get("/swagger/{any:path}", swagger.WrapHandler(swaggerFiles.Handler))
三,如何使用
在你代码中处理请求的接口函数,按如下方式写上注释
## post示例
// @summary 渠道总量
// @description 渠道总量
// @produce json
// @tags statistics
// @param request body monitor.CountReqParams true "查询请求"
// @success 200 {object} monitor.CountRespParams "查询结果"
// @Failure 500 {object} monitor.Response
// @router /monitor/count [post]
## get示例
// @summary 所有异常统计
// @description 所有异常统计
// @produce json
// @tags statistics
// @success 200 {object} monitor.ExceptionStatusRespParams "查询结果"
// @router /monitor/exception_status [get]
## form示例
// @summary 投放新任务
// @description 投放新的发包任务
// @accept multipart/form-data
// @produce json
// @tags task
// @param source formData string true "来源于来个系统"
// @param channel formData string true "发布到哪些渠道"
// @param hash formData string true "更新包的 hash"
// @param package_type formData string true "更新包的类型"
// @param description formData string true "更新包的描述"
// @param file formData file true "更新包文件,传多个文件"
// @success 200 {array} model.PackageId
// @router /interfaces/v1/task/create [post]