Swagger 是一个用于设计、构建、记录和使用 RESTful Web 服务的工具集。它的主要作用包括:
而对于我们的研发团队来说,swagger可以清晰的定义接口,即是代码也是文档,大大提升了前后端沟通的效率,团队内协作的效率!
而Go - Gin框架支持Swagger,下面一步一步来看下如何使用 swaggo/gin-swagger
库来生成和展示接口文档。
首先,安装依赖
安装swag
CLI工具
go install github.com/swaggo/swag/cmd/swag@latest
安装 gin-swagger
库
go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/files
创建一个新的Gin项目或在现有项目中添加Swagger支持。
go mod init ${your-project-name}
在你的代码中添加Swagger注释。例如:
package main import ( "go-gin-swagger-demo/docs" "net/http" "github.com/gin-gonic/gin" swaggerfiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" ) // @BasePath /api/v1 // PingExample godoc // @Summary ping example // @Schemes // @Description do ping // @Tags example // @Accept json // @Produce json // @Success 200 {string} Helloworld // @Router /example/helloworld [get] func Helloworld(g *gin.Context) { g.JSON(http.StatusOK, "helloworld") } // @Tags example // @Accept json // @Produce json // @Success 200 {object} map[string]string // @Router /example/hi [get] func Hi(c *gin.Context) { c.JSON(200, gin.H{ "message": "hi", }) } func main() { r := gin.Default() docs.SwaggerInfo.BasePath = "/api/v1" v1 := r.Group("/api/v1") { eg := v1.Group("/example") { eg.GET("/helloworld", Helloworld) eg.GET("/hi", Hi) } } r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerfiles.Handler)) r.Run(":8080") }
由于swag没被安装到全局,先查看swag所在位置
go env GOPATH
运行swag init
命令生成Swagger文档:
${go env GOPATH}/swag init
这将生成docs
目录,其中包含Swagger文档。
运行你的Gin项目:
go run main.go
然后在浏览器中访问http://localhost:8080/swagger/index.html
,你将看到Swagger UI。
通过这些步骤,你可以在Gin项目中集成Swagger,并生成和展示API文档。