[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
然后我们可以看到接口已经导入了
返回结果和注释都可以正常显示。
好了,教程到此结束