Mac下安装swag,并基于Golang gin框架使用swagger生成接口文档

Swagger

Swagger本质上是一种使用JSON表示的RESTful API的接口描述语言。Swagger与一组开源软件工具一起使用,以设计、构建、记录和使用RESTful Web服务。Swagger包括自动文档,代码生成和测试用例生成。

swag的安装及应用

我的操作系统的:macOS

安装swag:go install github.com/swaggo/swag/cmd/swag@latest

安装命令:

go install github.com/swaggo/swag/cmd/swag@latest

检查安装是否成功:swag -v

swag -v
#output: swag version v1.8.12

如果遇到报错:zsh: command not found: swag
先查看一下GOPATH的目录:

go env

试一下 $GOPATH/bin/swag -v,比如$GOPATH=“/Users/xxx/go”

/Users/xxx/go/bin/swag -v
#output: swag version v1.8.12

这样的话,就是没有加到环境变量,如下添加:

vim ~/.bash_profile
export PATH=/usr/xxx/go/bin:$PATH

最后运行source ~/.bash_profile更新环境变量 或者关掉终端再打开试一试swag -v 应该就正常了。

安装依赖包:gin-swagger库

go get -u github.com/swaggo/gin-swagger
go get -u github.com/swaggo/files
go get -u github.com/alecthomas/template

导入docs包:import ( _ "$本地包名/docs" )

import (
	_ "$本地包名/docs"
	ginSwagger "github.com/swaggo/gin-swagger"
	"github.com/swaggo/files"
)

如果未导入dosc包,访问http://localhost:8080/swagger/index.html时将报错如下:
在这里插入图片描述

编写swag注解

注解详情可参见官网文档 Swagger Documentation

注解	描述
@Summary		摘要
@Description	接口的详细描述
@Tags 			接口分组,相当于归类
@Accept 		json 浏览器可处理数据类型
@Produce		json 设置返回数据的类型和编码,例如:json、xml、html 等等
@Param			参数格式 从左到右:参数名、入参类型、数据类型、是否必填和注释  例:id query int true "ID"
@Success		响应成功 从左到右:状态码、参数类型、数据类型和注释  例:200 {string} string "success"
@Failure		响应失败 从左到右:状态码、参数类型、数据类型和注释  例:400 {object}  string "缺少参数 ID"
@Router			路由	    从左到右分别为:路由地址,HTTP 方法  例:/api/user/{id} [get]

比如下面的UserLogin接口函数定义:

//	@Summary		用户登录
//	@Description	用户登录
//	@Tags			用户相关
//	@Accept			application/x-www-form-urlencoded
//	@Produce		json
//	@Param			username	formData	string	true	"账户名"
//	@Param			password	formData	string	true	"密码"
//	@Success		200			{object}	string
//	@Router			/login [post]
func UserLogin(c *gin.Context) {
	var user User
    if err := c.ShouldBindJSON(&user); err != nil {
        fmt.Println(err.Error())
		c.JSON(200, gin.H{
			"result": 1, 
			"msg": "fail",
		})
        return
    }
	c.JSON(200, gin.H{
		"result": 0, 
		"msg": "success",
		"data"	: "用户登录 ok",
	})
}

格式化swag注解:swag fmt

swag fmt

生成docs文档:swag init

# swai init 默认通过项目根目录下的`main.go`文件生成
swag init
# 如果`main.go`不在根目录下,需要使用参数-g指定,比如在 `main/main.go`时命令为
swag init -g ./main/main.go

该命令会在项目根目录下生成一个docs文件夹,里面有下面3个文件夹:

./docs
├── docs.go
├── swagger.json
└── swagger.yaml

注意:每次更新注解后,都需要使用swag init重新生成文档。

添加访问路由:r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

import (
	_ "$本地包名/docs"
	ginSwagger "github.com/swaggo/gin-swagger"
	"github.com/swaggo/files"
)
r := gin.New()
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

从浏览器访问:http://localhost:8080/swagger/index.html

启动项目,在浏览器输入:http://localhost:8080/swagger/index.html
注:ip和端口号改成自己项目的即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值