欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-02 21:21:18
...

文章原发布地址https://xiaoyou66.com/archives/2322
本文章为个人博客的备份版本、作者:小游、作者博客:点击访问

[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目录
go Echo框架集成Swagger 自动生成api文档

开始集成

我们下载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 aaa@qq.com

// @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来更新接口

这里我拿我的接口来举例
go Echo框架集成Swagger 自动生成api文档

接口注释如下:
go Echo框架集成Swagger 自动生成api文档

生成文档swag init

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

里面就是我们的接口列表了
go Echo框架集成Swagger 自动生成api文档

参数说明

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

我这里只解释一下,如何导入自己的结构体(我们的返回结果是一个结构体,就像这样)
go Echo框架集成Swagger 自动生成api文档
结构体内容如下
go Echo框架集成Swagger 自动生成api文档

然后swagger就可以自动识别这个模型了
go Echo框架集成Swagger 自动生成api文档

yapi集成swagger

swagger自带的UI界面实在太丑了,所以我们把内容导入到yapi进行管理。
go Echo框架集成Swagger 自动生成api文档

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

然后我们可以看到接口已经导入了
go Echo框架集成Swagger 自动生成api文档

返回结果和注释都可以正常显示。
go Echo框架集成Swagger 自动生成api文档

好了,教程到此结束

相关标签: 程序语言