golang基于代码注释生成swagger API文档并自动同步到yAPI

该功能参考github开源项目gin-swagger,github地址如下:GitHub - swaggo/gin-swagger: gin middleware to automatically generate RESTful API documentation with Swagger 2.0.

生成swagger文档

编写代码注释

代码注释的字段参考:DeclarativeCommentsFormat · GitBook

代码注释分为两种:

General API info 的注释需要放在main函数的前面编写,主要是对API功能的一些基本介绍等等。

// @title 质检中心API接口

// @version 1.0

// @description 质检中心API接口——质检任务列表相关接口

// @contact.name xxx

// @contact.email xxx@lenovo.com

// @BasePath /hoicee/cqi/api

func main() {

...

}

而API Operation则可以写在每个api处理方法前,用于写明API的功能,接收的参数类型,参数列表等等

// QueryTaskList godoc

// @Summary 请求质检任务列表

// @Description 获取质检任务列表

// @Accept json

// @Produce json

// @Param appKey query string true "appKey"

// @Param timestamp query int true "时间戳"

// @Param sign query string true "签名"

// @Param jsonStr query object true "请求参数"

// @Success 200 {object} api.TaskListResponseData

// @Failure 400 {object} api.ResponseBase

// @Failure 404 {object} api.ResponseBase

// @Failure 500 {object} api.ResponseBase

// @Router /v1/items/list [get]

func ProcessQueryTaskList(c *gin.Context) {

...

}

重点说明一下Success及Failure的最后一个参数, 如上面例子中的api.TaskListResponseData,其实是对应到你项目中api包下的一个结构体,名字叫做TaskListResponseData,swag会自动解析这个结构体中的json tag,来生成对应的响应结构。

生成swagger文档

1.安装swag

go get -u github.com/swaggo/swag/cmd/swag

2.下载gin-swagger

go get -u github.com/swaggo/gin-swagger

go get -u github.com/swaggo/files

3.在main.go的根目录下,执行

swag init

此时swag会在main.go的根目录中生成docs目录

 该目录中就包含了根据代码注释生成的swagger格式的文档。文件类型包括json、yam两种

引入gin-swagger

在配置gin 路由的代码中,import如下几个包

package router

import (

    "fmt"

    "io"

    "cqi/dao"

    "cqi/operator/service"

    "cqi/utils/gin/midware"

    "github.com/gin-gonic/gin"

    swaggerFiles "github.com/swaggo/files"

    ginSwagger "github.com/swaggo/gin-swagger"

    "cqi/operator/docs" // docs is generated by Swag CLI, you have to import it.

)

最后的cqi/operator/docs应对应改为swag生成的docs目录

同时在gin路由中增加如下代码:

url := ginSwagger.URL(fmt.Sprintf("http://%s/swagger/doc.json", listen)) // The url pointing to API definition

router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, url))

其中listen应对应服务部署的ip及端口。本质上其实是为服务增加了一个/swagger/*any类型的get接口,调用该接口则返回docs目录中的swagger.json。

部署服务

将服务部署到yAPI可以访问的环境上,启动。

此时在浏览器中输入http://{host}:{port}/swagger/doc.json应该就能查看到接口返回了swagger.json的内容。

配置yAPI swagger自动同步

1.登录yAPI,创建好项目。

2.选择项目,在上面的功能栏中选择“设置”

 3.选择“Swagger自动同步”,并在“项目的swagger json地址”中配置上http://{host}:{port}/swagger/doc.json这个访问接口

 4.点击“保存”,此时yAPI就会调用刚才配置的接口并获取swagger格式的文档,解析后在“接口”中展示。并且yAPI会自动同步。

 每次当你修改了api注释,重新生成swagger文档并将服务部署到对应的环境中时,yAPI就能够自动进行同步,并调整API

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值