swagger使用接口文档

go swagger

Posted by 果果 on February 12, 2022

一,写之前先要知道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]

四,看看最后的效果

pic