1. 安装 Swagger 工具
1.1 安装 swaggo/swag 工具
swaggo/swag 是一个用于生成 Swagger 文档的 Go 语言工具。首先,你需要安装这个工具。
go install github.com/swaggo/swag/cmd/swag@latest1.2 安装 gin-swagger 中间件
如果你使用 gin 框架,可以使用 gin-swagger 中间件将生成的 Swagger 文档集成到你的 Web 服务器中。
go get -u github.com/swaggo/gin-swagger
go get -u github.com/swaggo/gin-swagger/swaggerFiles2. 编写 API 注释
在你的 Go 代码中,使用特定格式的注释来描述 API 的各个部分。swaggo 工具会读取这些注释并生成 Swagger 文档。
2.1 项目入口文件
在项目入口文件(通常是 main.go)中,为项目整体添加注释,包括 API 版本、标题、描述等信息。
package main
import (
"github.com/gin-gonic/gin"
"github.com/swaggo/gin-swagger"
"github.com/swaggo/gin-swagger/swaggerFiles"
_ "your_project/docs"
)
// @title Example API
// @version 1.0
// @description This is a sample server for a pet store.
// @termsOfService //example.com/terms/
// @contact.name API Support
// @contact.url //example.com/support
// @contact.email support@example.com
// @license.name Apache 2.0
// @license.url apache.org/licenses/LICENSE-2.0.html
// @host localhost:8080
// @BasePath /
func main() {
r := gin.Default()
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
// 注册路由
r.GET("/pet/:id", GetPetByID)
r.Run(":8080")
}
2.2 为 API 路由添加注释
接下来,为每个 API 路由添加详细的注释,包括请求参数、响应格式、状态码等信息。
// GetPetByID godoc
// @Summary Get a pet by ID
// @Description Get pet details by ID
// @Tags pets
// @Accept json
// @Produce json
// @Param id path int true "Pet ID"
// @Success 200 {object} Pet
// @Failure 400 {object} HTTPError
// @Failure 404 {object} HTTPError
// @Router /pet/{id} [get]
func GetPetByID(c *gin.Context) {
// 处理请求的代码
}
在这段代码中:
@Summary描述了 API 的简要信息。@Description提供了更详细的描述。@Tags用于将 API 分组。@Accept和@Produce表示 API 接受和返回的数据格式。@Param描述了路径、查询、头信息或请求体中的参数。@Success和@Failure描述了不同状态码下的响应格式。@Router指定了路由路径和方法。
3. 生成 Swagger 文档
在代码编写完成后,使用 swaggo 工具生成 Swagger 文档。
swag init
这个命令会在项目根目录生成一个 docs 文件夹,其中包含 Swagger 文档的相关信息。
4. 在项目中集成 Swagger UI
Swagger UI 是一个交互式界面,可以用来测试和查看 API。你可以在你的 Web 服务器中集成 Swagger UI。
4.1 在 main.go 中集成 Swagger UI
import (
"github.com/swaggo/gin-swagger"
"github.com/swaggo/gin-swagger/swaggerFiles"
)
func main() {
r := gin.Default()
// Swagger UI 路由
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
// 启动服务器
r.Run(":8080")
}
4.2 访问 Swagger UI
启动你的 Go 项目后,打开浏览器访问 //localhost:8080/swagger/index.html。你将看到自动生成的 API 文档,并可以在页面中直接测试 API。
5. 更新 Swagger 文档
每次你对 API 代码进行修改或添加新注释后,都需要重新运行 swag init 来更新 Swagger 文档。
swag init6. 高级配置
6.1 配置文件
你可以通过在项目中添加 swagger.yaml 或 swagger.json 文件来配置 Swagger 的一些高级功能,如认证、服务器设置等。
6.2 添加 API 示例
你可以在注释中提供更详细的请求和响应示例,以帮助用户更好地理解 API 的用法。
// @Success 200 {object} Pet "请求成功返回的宠物信息"
// @Failure 404 {object} HTTPError "宠物未找到的错误信息"
结论
Swagger 是一个强大的工具,它不仅能够帮助开发者自动生成 API 文档,还能为 API 的消费者提供友好的交互界面。通过 Swagger,你可以更轻松地管理和测试你的 API,确保文档始终与代码保持同步。