gin swag 安装&使用手册&问题

本文档详细介绍了gin-swagger的安装步骤与使用方法,并提供了示例代码帮助开发者快速搭建带有文档功能的RESTful API服务。同时,针对安装及运行过程中可能遇到的问题给出了相应的解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gin-swagger 安装&使用手册&问题

官方地址

https://github.com/swaggo/gin-swagger

安装教程

#!/bin/bash
# install swag
go get -u github.com/swaggo/swag/cmd/swag

#Download gin-swagger by using:
go get -u github.com/swaggo/gin-swagger
go get -u github.com/swaggo/files
  • init
swag init

特别提醒

swag 之后会默认生成docs目录,请在项目中导入

import _ "Your/Project/RootPath/docs"

API信息

官方文档: https://swaggo.github.io/swaggo.io/declarative_comments_format/

快速上手

gin-swagger

import (
	_ "Your/Project/RootPath/docs"
	"github.com/gin-gonic/gin"
	ginSwagger "github.com/swaggo/gin-swagger"
	"github.com/swaggo/gin-swagger/swaggerFiles"
)
// @title ioc api
// @version v0.0.1
// @description null
// @termsOfService http://swagger.io/terms/
// @contact.name puhao
// @contact.url puhao
// @contact.email puhao
// @license.name Apache 2.0
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
// @host 0.0.0.0:8989
// @BasePath
func main() {

	r := gin.Default()
  r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
	r.Run("0.0.0.0:8989")
}

API Info

// Login godoc
// @Summary login with user and password, get token
// @Tags login
// @version 1.0
// @Accept application/x-json-stream
// @Param user query string true "user name"
// @Param pd query string true "user's password"
// @Router /openapi/login [get]
// @Success 200 {object} YOURObject "{"code":200,"data": {"token": ""},"msg":""}"
// @Failure 403 {object} YOURObject {"code":200,"data":null,"msg":""}
func Login(c *gin.Context) {
   //...Your logic

}

遇到的问题

Type definition of type ‘*ast.InterfaceType’ is not supported yet. Using ‘object’ instead.

go get -u github.com/swaggo/swag/cmd/swag@v1.6.7

Failed to load spec. (同时会有panic信息)

import _ "Your/Project/RootPath/docs"

TypeError: Failed to fetch

摁F12,看报错详情,一般会有 has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’,那么这是跨域问题

### 如何在 Gin 框架中集成 Swagger 实现 API 文档自动生成 要在 Go 的 Gin 框架中集成 Swagger 并实现 API 文档的自动生成,可以按照以下方法操作: #### 安装依赖库 首先需要安装 `swag` 工具以及其对应的包。可以通过运行以下命令来完成安装: ```bash go get -u github.com/swaggo/files go get -u github.com/swaggo/gin-swagger go install github.com/swaggo/swag/cmd/swag@latest ``` 这些工具提供了必要的支持功能用于生成和展示 Swagger 文档。 #### 初始化项目并配置路由 创建一个新的 Go 文件作为入口文件(例如 `main.go`),初始化 Gin 路由器,并引入 Swagger 所需的功能模块。以下是基本代码结构的一个例子: ```go package main import ( "github.com/swaggo/files" "github.com/swaggo/gin.swagger" gin "github.com/gin-gonic/gin" ) // @title Gin-Swagger Example API // @version 1.0 // @description This is a sample server Petstore server. func main() { r := gin.Default() url := ginSwagger.URL("http://localhost:8080/swagger/doc.json") // The url pointing to API definition r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler, url)) r.Run(":8080") } ``` 上述代码设置了 `/swagger/*any` 路径指向 Swagger UI 页面[^3]。 #### 编写注解以定义 API 接口 为了使 Swag 自动解析接口信息,在每个 HTTP 方法上都需要添加特定格式的注释。下面是一个简单的 GET 请求示例: ```go // GetUser godoc // @Summary Get user by ID // @Description get user by ID // @ID get-user-by-id // @Accept json // @Produce json // @Param id path int true "User ID" // @Success 200 {object} model.User // @Router /users/{id} [get] func GetUser(c *gin.Context) { id := c.Param("id") c.JSON(200, gin.H{"user": id}) } ``` 通过这样的方式标记每一个控制器函数,则可以在后续阶段被正确识别出来形成完整的文档内容[^2]。 #### 运行 swag init 命令生成文档 当所有的接口都已适当标注之后,执行如下命令即可生成静态 HTML/CSS/JS 文件连同 JSON/YAML 格式的 OpenAPI Specification 数据一起打包到项目的指定目录下: ```bash swag init --generalInfo ./main.go ``` 此过程会读取源码中的特殊注释并将它们转换成标准化的形式供前端界面渲染使用[^1]。 完成后访问 http://<your-domain>:port/swagger/index.html 即可查看实时更新后的在线版交互式 API 参考手册! ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值