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文件才會生效
