Gin-Swagger 使用篇
Swagger相信Web开发都非常熟悉了,当我们使用Golang的web开发框架Gin的时候,如何使用Swagger呢
这个时候就可以使用gin-swagger了,先来看看gin-swagger官方描述:
gin middleware to automatically generate RESTFUL API documentation with Swagger 2.0.
git地址:https://github.com/swaggo/gin-swagger/tree/master/
1、首先得下载Swag for Go:
go get -u github.com/swaggo/swag/cmd/swag
然后还需下载两个依赖包:
go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/files
2、在main.go文件中将Swagger的总体注释写进去:
// @title IvanApi Swagger 标题
// @version 1.0 版本
// @description IvanApi Service 描述
// @BasePath /api/v1 基础路径
// @query.collection.format multi
func main() {
r := Router.Router()
r.Run(":8081")
}
这样就把基础的swagger信息写好了,当然还有其他可用参数,详情请看官方文档。
3、注册Swagger api相关路由
docs.SwaggerInfo.BasePath = "/api/v1"
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerfiles.Handler))
Full Code
import (
"IvanApi/Apis"
docs "IvanApi/docs"
"github.com/gin-gonic/gin"
swaggerfiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
)
func Router() *gin.Engine{
r := gin.New()
docs.SwaggerInfo.BasePath = "/api/v1"
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerfiles.Handler))
v1 := r.Group("/api/v1")
{
eg := v1.Group("/ops")
{
eg.GET("/getbroadcast",Apis.GetBroadCastList)
}
}
return r
}
4、完善Api函数注释
Get请求
// @Summary 摘要 比如获取用户列表
// @Schemes
// @Description 这里写描述 get users
// @Tags ops 标签 比如同类功能使用同一个标签
// @Param Id query int true "Id" 参数 :@Param 参数名 位置(query 或者 path或者 body) 类型 是否必需 注释
// @Accept json
// @Produce json
// @Success 200 {object} Model.PageResult GetUser 返回结果 200 类型(object就是结构体) 类型 注释
// @Router /user [get]
func GetUserList(g *gin.Context) {
g.JSON(http.StatusOK, nil)
}
Put请求
// @Summary 修改
// @Schemes
// @Description update
// @Tags ops
// @Param userinput body Model.UserUpdateInput true "入参"
// @Accept json
// @Produce json
// @Success 200 {object} Model.ResponseResult UpdateUser
// @Router /user [put]
func UpdateUser(g *gin.Context) {
}
5、完善模型注释
// 响应数据
type PageResult struct{
Total int `json:"total"` // 总条数
PageSize int `json:"pageSize"` // 页码
PageIndex int `json:"pageIndex"` // 页签
Result interface{} `json:"result"` // 结果
}
模型这里直接后面加注释就可以了,swagger会自动生成注释
6、生成swagger文件
在终端输入:
swag init
这里要有注意的点,就是每一次修改swagger注释还有其他参数的时候需要重新生成swagger文件才会生效
如有错误,欢迎指正,互相学习。谢谢!

浙公网安备 33010602011771号