Gin使用swagger生成文档
使用 Swagger 可以让你为 Gin 框架的 API 提供自动生成的 API 文档。通过 Swagger,开发者可以方便地查看、测试和分享 API。以下是如何在 Gin 项目中集成和使用 Swagger 的详细步骤。
1. 安装依赖
首先,安装 swag
工具:
2. 添加 Swag 注释
在你的 Gin 项目中,添加 Swag 注释。这些注释将用于生成 Swagger 文档。
示例 main.go
:
package main
import (
"net/http"
_ "your_project/docs" // docs is generated by Swag CLI, you have to import it.
"github.com/gin-gonic/gin"
swaggerfiles "github.com/swaggo/files" // swagger embed files
ginSwagger "github.com/swaggo/gin-swagger" // gin-swagger middleware
)
// PingExample godoc
// @Summary ping example
// @Description do ping
// @Tags example
// @Accept json
// @Produce json
// @Success 200 {string} json "{"message": "pong"}"
// @Router /ping [get]
func ping(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "pong",
})
}
// @title Gin 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 localhost:8080
// @BasePath /api/v1
func main() {
r := gin.Default()
// Swagger endpoint
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
// Simple API endpoint
r.GET("/ping", ping)
r.Run(":8080")
}
在这个示例中,添加了 Swagger 注释,包括 API 的标题、版本、描述、联系方式和许可信息。这些信息将显示在 Swagger UI 中。
3. 生成 Swagger 文档
使用 swag
命令生成 Swagger 文档。确保在项目根目录中运行:
这个命令将生成 docs
目录,包含 docs.go
和 swagger.json
等文件。
4. 启动服务器
启动你的 Gin 服务器:
5. 访问 Swagger UI
打开浏览器,访问以下 URL:
你应该会看到自动生成的 Swagger UI,其中包含你定义的 API 及其文档。
6. 完整示例项目结构
假设你的项目结构如下:
7. 示例代码细节
完整的 main.go
文件:
package main
import (
"net/http"
_ "your_project/docs" // docs is generated by Swag CLI, you have to import it.
"github.com/gin-gonic/gin"
swaggerfiles "github.com/swaggo/files" // swagger embed files
ginSwagger "github.com/swaggo/gin-swagger" // gin-swagger middleware
)
// PingExample godoc
// @Summary ping example
// @Description do ping
// @Tags example
// @Accept json
// @Produce json
// @Success 200 {string} json "{"message": "pong"}"
// @Router /ping [get]
func ping(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "pong",
})
}
// @title Gin 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 localhost:8080
// @BasePath /api/v1
func main() {
r := gin.Default()
// Swagger endpoint
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
// Simple API endpoint
r.GET("/ping", ping)
r.Run(":8080")
}
8. 总结
通过上述步骤,你可以在 Gin 项目中集成 Swagger 来自动生成 API 文档。这不仅能提高开发效率,还能使你的 API 更易于使用和分享。