golang gin框架 swag在线api文档

 


一 安装swag

go get github.com/swaggo/swag/cmd/swag

 

二 安装gin-swagger

go get -u github.com/swaggo/gin-swagger

go get -u github.com/swaggo/gin-swagger/swaggerFiles

 

三 生成docs文件夹

 

swag init  
  • swag init一定要和main.go处于同一级目录
  • main程序名称必须为main.go, 本人尝试过别的名字比如wbw.go的时候会报如下错误,有知道如何解决的朋友可教我一下
    cannot parse source files /home/wbw/go/src/debuggrpc/test/testswag/main.go: open /home/wbw/go/src/debuggrpc/test/testswag/main.go: no such file or directory      

 

四 gin引用swag

 

  main.go

复制代码
package main

import (
    "debuggrpc/test/testswag/controller"
    "github.com/gin-gonic/gin"
    "github.com/swaggo/gin-swagger/swaggerFiles"

    ginSwagger "github.com/swaggo/gin-swagger"

    _ "debuggrpc/test/testswag/docs"

)

// @title TestSwg API
// @version 1.0

// @host 127.0.0.1:9501
// @BasePath /testswag/v1.0
func main(){
    router := gin.Default()
    // v1
    r1 := router.Group("/testswag/v1.0")
    {
        r1.GET("/Baseinfo", controller.Baseinfo)

    }
    router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
    router.Run( "0.0.0.0:8080")
}
复制代码

  base.go

 

复制代码
package controller

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

// @Summary 获取基础信息列表
// @Description 获取基础信息列表
// @Tags 基础信息
// @Accept json
// @Success 200 {json} json "{"errno":0,"errmsg": "成功","data":infolist}"
// @Failure 400 {json} json "{"errno":4502,"errmsg": "查询失败"}"
// @Router /Baseinfo [post]
func Baseinfo(ctx *gin.Context) {
    resp := make(map[string]interface{})
    resp["data"] = "baseinfo"
    resp["errno"] = 200
    resp["errmsg"] = "success"
    ctx.JSON(http.StatusOK, resp)
    return
}
复制代码

  运行main.go之后,浏览器分别访问 http://localhost:8080/testswag/v1.0/Baseinfo   

 

http://localhost:8080/swagger/index.html

 

 

  • 请注意main代码中的import
  • 请记住导入  _ "debuggrpc/test/testswag/docs"
  • swag其他注释比如param等请自行查阅 Swaggo · Go语言中文文档 (topgoer.com)
  • 记得更新文档(swag注释)后要swag init一下并重启gin
  • gin的分组为router.group; swag的分组为tag标签

 

posted @   布叔喂丶  阅读(938)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示