Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >使用 Swagger 为 Go 项目生成 API 文档

使用 Swagger 为 Go 项目生成 API 文档

原创
作者头像
浩瀚星河
发布于 2025-03-23 09:20:56
发布于 2025-03-23 09:20:56
16800
代码可运行
举报
文章被收录于专栏:golanggolang
运行总次数:0
代码可运行

Swagger 是一个基于 OpenAPI 规范设计的工具,用于为 RESTful API 生成交互式文档。本文将介绍如何在 Go 项目中集成 Swagger,特别是结合 Gin 框架生成 API 文档。

安装 Swagger

全局安装 swag CLI

swag 是 Swagger 的命令行工具,用于生成 API 文档。可以通过以下命令全局安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go get github.com/swaggo/swag/cmd/swag@latest
go install github.com/swaggo/swag/cmd/swag@latest

项目依赖安装

在项目中需要安装以下依赖以支持 Gin 和 Swagger 的集成:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go get github.com/swaggo/gin-swagger
go get github.com/swaggo/files
go get github.com/alecthomas/template

格式化 Swagger 注释

使用 swag fmt 命令可以格式化项目中的 Swagger 注释,确保注释符合规范:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
swag fmt

使用 swag CLI 生成文档

运行以下命令生成 Swagger 文档(默认生成 docs.goswagger.jsonswagger.yaml 文件):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
swag init

swag init 常用选项

选项

说明

默认值

--generalInfo, -g

指定包含通用 API 信息的 Go 文件路径

main.go

--dir, -d

指定解析的目录

./

--exclude

排除解析的目录(多个目录用逗号分隔)

--propertyStrategy, -p

结构体字段命名规则(snakecase、camelcase、pascalcase)

camelcase

--output, -o

输出文件目录(swagger.json、swagger.yaml 和 docs.go)

./docs

--parseVendor

是否解析 vendor 目录中的 Go 文件

--parseDependency

是否解析依赖目录中的 Go 文件

--parseInternal

是否解析 internal 包中的 Go 文件

--instanceName

设置文档实例名称

swagger

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
swag init --dir ./ --output ./docs --propertyStrategy snakecase

Swagger 注释格式

Swagger 使用声明式注释来定义 API 的元信息。以下是常用注释及其说明:

通用 API 信息

通常在 main.go 中定义,用于描述整个 API 的基本信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// @title Swagger Example API
// @version 1.0
// @description This is a sample server celler server.
// @termsOfService http://swagger.io/terms/
// @contact.name API Support
// @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 localhost:8080
// @BasePath /api/v1
// @schemes http https

API 路由注释

在具体路由处理函数上方添加注释,定义该接口的行为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// GetPostById
// @Summary 获取文章信息
// @Produce json
// @Param id path string true "文章ID"
// @Success 200 {object} Post "成功返回文章信息"
// @Failure 400 {string} string "请求参数错误"
// @Router /post/{id} [get]
func GetPostById(c *gin.Context) {
    // 函数实现
}
  • @Summary:接口简述
  • @Produce:返回的 MIME 类型
  • @Param:参数定义(格式:名称 位置 类型 是否必填 描述
  • @Success:成功响应(格式:状态码 {类型} 数据结构 描述
  • @Failure:失败响应
  • @Router:路由路径和方法

示例项目代码

以下是一个完整的示例,展示如何在 Gin 项目中集成 Swagger:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import (
    "github.com/gin-gonic/gin"
    swaggerFiles "github.com/swaggo/files"
    ginSwagger "github.com/swaggo/gin-swagger"
    "strconv"
    _ "swagger/docs" // 导入生成的 Swagger 文档
)

// Post 文章结构体
type Post struct {
    ID          int64  `json:"id"`
    Title       string `json:"title"`
    Content     string `json:"content"`
    Description string `json:"description"`
}

func main() {
    r := gin.Default()
    r.GET("/post/:id", GetPostById)
    // 配置 Swagger 路由
    r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
    r.Run(":8080")
}

// GetPostById 获取文章信息
// @Summary 获取文章信息
// @Produce json
// @Param id path string true "文章ID"
// @Success 200 {object} Post "成功返回文章信息"
// @Failure 400 {string} string "请求参数错误"
// @Router /post/{id} [get]
func GetPostById(c *gin.Context) {
    id, err := strconv.ParseInt(c.Param("id"), 10, 64)
    if err != nil {
        c.String(400, err.Error())
        return
    }
    c.JSON(200, Post{
        ID:          id,
        Title:       "codepzj",
        Content:     "测试",
        Description: "测试",
    })
}

生成并访问文档

  1. 运行 swag init 生成文档。
  2. 启动项目:go run main.go
  3. 在浏览器中访问 http://localhost:8080/swagger/index.html,即可查看交互式 API 文档。
image-20250323141131759
image-20250323141131759

总结

通过 swaggin-swagger,我们可以轻松为 Go 项目生成规范的 API 文档。只需要编写简单的注释,Swagger 就能自动生成交互式的文档页面,方便开发和调试。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
gin集成swagger构建api文档
这个时候你会发现在项目目录新建了一个docs目录,包含docs.go、swagger.json、swagger.yaml
孤烟
2020/09/27
1K0
​工作中后端是如何将API提供出去的?swaggo很不错
咱们上一次简单分享了 GO 权限管理之 Casbin ,他一般指根据系统设置的安全规则或者安全策略
阿兵云原生
2023/02/16
4850
gin框架之用swagger自动生成API文档
我们在工作当中经常需要用到接口文档,那么怎么写接口文档呢?又会遇到哪些坑呢?刚开始的时候,我们用word写文档,后来我们用markdown写文档。但是这些方式不利于维护,到后来我们发现,接口改了,文档还是原来的样子,不利于维护。而且每次我们都需要用postman工具进行接口开发测试,及其繁琐麻烦。我在无意当中发现了swagger,从此喜爱上用swagger写文档。他不接可以自动生成文档,而且可以直接用来做接口测试。
大话swift
2020/03/13
2.3K0
swagger (GO) API文档工具入门
swaggo swagger 安装 swag 命令 go get -u github.com/swaggo/swag/cmd/swag 编写注释 服务基础信息 // @title swagger使用例子 // @version 1.0 // @description swagger 入门使用例子 func main(){ r := gin.Default() r.GET("/check", connectCheck) ... } api信息 type Response struct{
copy_left
2020/08/12
3.9K0
Gin 生成 Swagger 接口文档
后台服务通过接口(如 RESTful API)对外提供服务时,需要有明确的接口文档。
恋喵大鲤鱼
2023/02/23
2.3K0
Gin 生成 Swagger 接口文档
Go每日一库之101:swagger
一份清晰明了的接口文档能够极大地提高前后端双方的沟通效率和开发效率。本文将介绍如何使用swagger生成接口文档。
luckpunk
2023/09/30
9140
『No17: gin-swagger 构建自动化文档』
重要,前后端的交互一般流程是这样的,后端暴露出API后,交给前端,前端根据API的响应,编写前端页面,一定程度上API 是前后端的交互桥梁。
谢伟
2018/08/02
1.3K0
『No17: gin-swagger 构建自动化文档』
如何构建交互式的RESTful API文档
相信后端开发同学都写过API文档,如果你只开发API接口而不写文档会估计会被喷,而且写文档确实是个好习惯。但是写文档这个事确实挺痛苦的,之前我的做法是在内部开发人员内部约定一个markdown模板来填写,类似api.md这种格式,每个接口都会有多个字段(URL,Method,Params)来说明。
xiaojunzhou
2019/05/27
1.5K0
听说你还不会jwt和swagger-饭我都不吃了带着实践项目我就来了
哈喽,大家好,我是asong,这是我的第八篇原创文章。听说你们还不会jwt、swagger,所以我带来一个入门级别的小项目。实现用户登陆、修改密码的操作。使用GIN(后台回复Golang梦工厂:gin,可获取2020GIN中文文档)作为web框架,使用jwt进行身份校验,使用swagger生成接口文档。代码已上传个人github:https://github.com/asong2020/Golang_Dream/tree/master/Gin/gin_jwt_swagger。有需要的自行下载,配有详细使用文档。
Golang梦工厂
2022/07/07
7840
听说你还不会jwt和swagger-饭我都不吃了带着实践项目我就来了
Gin 框架: 添加 Swagger UI
boot.yaml 文件会告诉 rk-boot 如何启动 Gin 服务,下面的例子中,我们指定了端口,Swagger UI 的 json 文件路径。
尹东勋
2021/10/26
1.7K0
Gin 框架: 添加 Swagger UI
Hertz 整合swagger
因为从 Go 1.17 开始,在 go mod 模式下通过 go get 下载对应库文件将无法自动编译并安装到 $GOPATH/bin 的路径, 所以不再推荐用 go get 来安装可执行文件的方式。可以使用 go install来代替。
onenewcode
2024/02/05
2020
Go:构建应用程序的10大框架
现在,很多开源库都支持构建应用程序。我应该向你推荐一些库,它们可以帮助启动具有简单设计、干净代码和良好性能的项目。
Freedom123
2024/03/29
2100
Go:构建应用程序的10大框架
GoFrame 框架: 添加 Swagger UI
我们介绍 rk-boot 库,用户可以快速搭建基于 GoFrame 框架的微服务。
尹东勋
2021/12/14
1.5K0
GoFrame 框架: 添加 Swagger UI
gorilla/mux 框架 (rk-boot): 添加 Swagger UI
boot.yaml 文件会告诉 rk-boot 如何启动 gorilla/mux 服务,下面的例子中,我们指定了端口,Swagger UI 的 json 文件路径。
尹东勋
2022/02/08
7790
gorilla/mux 框架 (rk-boot): 添加 Swagger UI
Echo 框架: 添加 Swagger UI
boot.yaml 文件会告诉 rk-boot 如何启动 Echo 服务,下面的例子中,我们指定了端口,Swagger UI 的 json 文件路径。
尹东勋
2021/11/02
1.2K0
Echo 框架: 添加 Swagger UI
后端独立开发调试工具swagger
gin-swagger go get -u github.com/swaggo/swag/cmd/swag 下载swagger tool swag init -d .,…/controller 生成docs文件夹(main.go文件同目录执行,-d指定需要解析的所有路径,逗号隔开) 添加路由 import _ "model_path/docs" //导入生成的docs文件 import gs "github.com/swaggo/gin-swagger" import "github.com/sw
sofu456
2021/12/06
5660
swagger, swag, gin-swagger之间的关系
很多人不太理解 swagger, swag, gin-swagger 的关系,本文简单总结一下。
runzhliu
2022/04/13
5340
用go-module作为包管理器搭建go的web服务器
本篇博客主要介绍了如何从零开始,使用Go Module作为依赖管理,基于Gin来一步一步搭建Go的Web服务器。并使用Endless来使服务器平滑重启,使用Swagger来自动生成Api文档。
SH的全栈笔记
2019/10/20
1.6K0
使用Beego+Swagger构建更好的API服务
题图 By NewYorker From Twitter 一. 更好的API服务 在你已经在工作中写了很多版本,很多规范的API服务之后,你会发现,后端服务很多共性的工作需要去完成,比如: 1)良好的API说明文档,最好还附带可访问,试一试的服务url 2)为API提供多种语言的sdk(调用端代码:比如安卓,ios和php) 3)保证API文档和代码同步实时的更新(容易遗忘) 4)持续的性能profiling,优化 那么怎样很优雅的解决如上的问题呢? 一个比较好的方案是 beego代码注释 -> swa
李海彬
2018/03/19
2.3K0
使用Beego+Swagger构建更好的API服务
Golang: gin-vue-admin框架介绍
gin-vue-admin基于gin+vue搭建的后台管理系统框架,集成jwt鉴权,权限管理,动态路由,分页封装,多点登录拦截,资源权限,上传下载,代码生成器,表单生成器,通用工作流等基础功能,五分钟一套CURD前后端代码,目前已支持VUE3,欢迎issue和pr~
OwenZhang
2021/12/08
1.8K0
Golang: gin-vue-admin框架介绍
相关推荐
gin集成swagger构建api文档
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文