go Echo框架集成Swagger 自动生成api文档


[info]
之前的api文档一直都是手写的,使用起来非常麻烦,所以我打算采用swagger来自动生成api文档,减少我的工作量同时接口更新后文档也能自动更新,减少自己维护文档的麻烦,废话不多说,直接开始集成。
[/info]

swagger官方有对echo专门开发过适配的包,项目地址:https://github.com/swaggo/echo-swagger

安装swagger

安装命令:go get github.com/swaggo/swag/cmd/swag

安装可能会失效,建议在命令行开启代理:

set http_proxy=http://0.0.0.0:8000
set https_proxy=http://0.0.0.0:8000

初始化swagger

自己切换到项目目录下初始化swagger:swag init

然后我们就会看到项目里面多了一个docs目录

开始集成

我们下载swagger的echo中间件
go get -u github.com/swaggo/echo-swagger

然后我们引入中间件

import "github.com/swaggo/echo-swagger" // echo-swagger middleware

安装官方给的这个例子,我们来注册一下中间件(这里可以给主函数加上注释,解释整个api接口)

package main

import (
	"github.com/labstack/echo/v4"
	"github.com/swaggo/echo-swagger"

	_ "github.com/swaggo/echo-swagger/example/docs" // docs is generated by Swag CLI, you have to import it.
)

// @title Swagger Example API
// @version 1.0
// @description This is a sample server Petstore 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 petstore.swagger.io
// @BasePath /v2
func main() {
	e := echo.New()

	e.GET("/swagger/*", echoSwagger.WrapHandler)

	e.Logger.Fatal(e.Start(":1323"))
}

给函数加上注释:

// @Title GetUser
// @Description 获取用户信息
// @Accept  json
// @Param nick_name formData string true "昵称"
// @Param user_name formData string true "用户名称"
// @Param password formData string true "密码"
// @Param age formData int true "年龄"
// @Success 200 "获取信息成功"
// @Failure 400	"获取信息失败"
// @Router /getUser [get]
func getUser(c echo.Context) error {
	// User ID from path `users/:id`
	return c.String(http.StatusOK, "hello")

注意,每次想看最新记录的时候需要自己手动执行swag init来更新接口

这里我拿我的接口来举例

接口注释如下:

生成文档swag init

启动项目,然后我们访问http://localhost:2333/swagger/index.html 我这里echo端口是2333

里面就是我们的接口列表了

参数说明

详细参考这个
https://github.com/swaggo/swag#declarative-comments-format

我这里只解释一下,如何导入自己的结构体(我们的返回结果是一个结构体,就像这样)

结构体内容如下

然后swagger就可以自动识别这个模型了

yapi集成swagger

swagger自带的UI界面实在太丑了,所以我们把内容导入到yapi进行管理。

json文件就是在启动项目,然后我们访问http://localhost:2333/swagger/doc.json 我这里echo端口是2333

然后我们可以看到接口已经导入了

返回结果和注释都可以正常显示。

好了,教程到此结束


文章作者: 小游
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小游 !
  目录