已解决目前网络上其他教程的坑。
安装依赖
go get github.com/swaggo/swag/cmd/swag
go get github.com/swaggo
go get github.com/swaggo/gin-swagger
初始化gin-swagger
swag init
集成到现有项目
对于小白的提醒:下方两个示例文件中,import语句中的demo是指go.mod中第一行的名称,这里作为示例就不修改了,但如果你要修改,确保这里和你的mod名字一样。
main.go主程序内容示例
在程序入口main函数之上,写下项目相关介绍信息注解。
package main
import (
"demo/router"
)
// @title 这里写页面标题
// @version 1.0
// @description 这里写描述信息
// @termsOfService http://swagger.io/terms/
// @contact.name 这里写联系人信息
// @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 这里写接口服务的host
// @BasePath 这里写base path
func main() {
r := router.NewRouter()
r.Run(":8866")
}
router包内容示例
package router
import (
_ "demo/docs"
"net/http"
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
"github.com/gin-gonic/gin"
)
// GreetingResponse 定义响应的模型
type GreetingResponse struct {
Message string `json:"message"`
}
// @Summary 简单接口
// @Description 这是一个示例接口
// @Tags 简单
// @Accept json
// @Produce json
// @Param Authorization header string false "Bearer 用户令牌"
// @Success 200 {object} GreetingResponse "返回简单信息"
// @Router /greeting [get]
func GreetingHandler(c *gin.Context) {
c.JSON(http.StatusOK, GreetingResponse{Message: "你好,世界!"})
}
// NewRouter 初始化Gin路由器并添加带处理函数的路由。
func NewRouter() *gin.Engine {
r := gin.Default()
// 配置访问Swagger页面的路由
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
// 添加一个访问路由
r.GET("/greeting", GreetingHandler)
return r
}
启动
初始化项目、安装依赖(这里命名为demo)、再次生成接口文档。
go mod init demo
go mod tidy
swag init
运行主程序
go run main.go
完事
浏览器打开地址查看吧!(这里的端口是示例中main.go主程序定义的)
http://localhost:8866/swagger/index.html