Swagger UI 仍然显示示例

Dav*_*lda 3 go swagger go-gin

我想将 Swagger 用于 Go 和 Gin 的 RESTFul API 文档。

我在 main.go 中有这段代码: package main

import (
    "gowebservice/config"
    "gowebservice/controllers"

    "github.com/gin-gonic/gin"
    swaggerFiles "github.com/swaggo/files"
    ginSwagger "github.com/swaggo/gin-swagger"

    _ "github.com/swaggo/gin-swagger/example/basic/docs"
)

// @title Students API
// @version 1.0
// @description This is a basic API Students using Gin and Gorm.

// @host localhost:8080
// @BasePath /

func main() {
    r := gin.Default()

    config.ConnectDatabase()

    v1 := r.Group("/api/v1")
    {
        v1.GET("students/all", controllers.GetStudents)
    }

    r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

    r.Run()
}
Run Code Online (Sandbox Code Playgroud)

这是我有 GET 方法的端点:

package controllers

import (
    "gowebservice/config"
    "gowebservice/models"
    "net/http"

    "github.com/gin-gonic/gin"
)

// GetStudents godoc
// @Summary Show a list of students
// @Accept  json
// @Produce  json
// @Router /students [get]
func GetStudents(c *gin.Context) {
    var students []models.Student

    if err := config.DB.Find(&students).Error; err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": "Record not found!"})
        return
    }
    c.JSON(http.StatusOK, students)
}
Run Code Online (Sandbox Code Playgroud)

当我使用swag init和 时go run main.go,Swagger UI 仍然显示示例而不是我的端点。

在此输入图像描述

有人可以帮助我吗?

小智 8

我也遇到了这个

问题是我们导入了基本示例文档:

import (
    ...

    _ "github.com/swaggo/gin-swagger/example/basic/docs"
)
Run Code Online (Sandbox Code Playgroud)

您需要将其更改为由 生成的文档包swag init。假设您的模块名称是gowebservice,那么:

import (
    ...

    _ "gowebservice/docs"
)
Run Code Online (Sandbox Code Playgroud)

go run main.go之后运行应该会让 Swagger UI 找到您自己的文档!:D

  • 天哪,谢谢你。你救了我的命 :D @wei-liang-chew (2认同)