当前位置: 首页 > news >正文

使用 Swagger 在 Golang 中进行 API 文档生成

Swagger 是一款强大的 API 文档生成工具,可以帮助开发者轻松创建、管理和展示 RESTful API 文档。在本文中,我们将介绍如何在 Golang 项目中使用 Swagger 来生成 API 文档。

官网地址 : gin-swagger

前提条件

  • Golang 开发环境(推荐使用 Go 1.16 或更高版本)
  • Go Modules 管理工具
  • 已安装的 Git 工具

第一步:安装 Swagger 工具

在开始之前,我们需要安装 Swagger 工具。你可以使用以下命令来安装 Swagger:

go install github.com/swaggo/swag/cmd/swag@latest

安装完成后,可以通过运行以下命令来验证安装是否成功:

swag --v

第二步:安装 Swaggo 依赖

Swaggo 是一个用于 Golang 的 Swagger 文档生成器。我们需要在项目中安装 Swaggo 依赖:

go get -u github.com/swaggo/swag/cmd/swag
go get -u github.com/swaggo/gin-swagger
go get -u github.com/swaggo/files
go get -u github.com/swaggo/swag

第三步:编写 API 代码

接下来,我们编写一个简单的 API 示例。在项目根目录下创建一个 main.go 文件,并添加以下内容:

package mainimport ("github.com/gin-gonic/gin""github.com/swaggo/gin-swagger""github.com/swaggo/gin-swagger/swaggerFiles"_ "go-swagger-example/docs"
)// @title Swagger Example API
// @version 1.0
// @description This is a sample server Petstore 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/v1func main() {r := gin.Default()// Simple group: v1v1 := r.Group("/api/v1"){v1.GET("/hello", helloHandler)}r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))r.Run()
}// helloHandler godoc
// @Summary Show a hello message
// @Description get string message
// @Tags example
// @Accept  json
// @Produce  json
// @Success 200 {string} string "ok"
// @Router /hello [get]
func helloHandler(c *gin.Context) {c.JSON(200, gin.H{"message": "hello world",})
}

第四步:生成 Swagger 文档

在编写好 API 代码后,我们可以使用 Swaggo 生成 Swagger 文档。在项目根目录下运行以下命令:

swag init

运行此命令后,会在项目根目录下生成 docs 文件夹,其中包含生成的 Swagger 文档。

第五步:运行项目并访问 Swagger UI

最后,我们运行项目,并访问 Swagger UI。运行以下命令启动项目:

go run main.go

在浏览器中访问 http://localhost:8080/swagger/index.html,即可看到生成的 Swagger UI 页面,其中包含了我们编写的 API 文档。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深入解析C#中的URI和URL编码:理解EscapeDataString、EscapeUriString和UrlEncode的区别及字符编码错误处理
  • SpringCloud之feign
  • 前端三大主流框架对比
  • 流媒体服务器一:使用成熟的流媒体SRS 搭建 RTMP流媒体服务器
  • Java的序列化和反序列化
  • 阿里云服务器上怎么生成公钥和私钥对
  • K210视觉识别模块学习笔记7:多线程多模型编程识别
  • Qt基础 | QSqlTableModel 的使用
  • 深入解析 Java 集合类:ArrayList、LinkedList、Vector
  • RIP路由协议
  • set(集合),multiset容器及pair队组的创建
  • Java语言程序设计基础篇_编程练习题**15.28(显示一个转动的风扇)
  • 【Linux】进程IO|重定向|缓冲区|dup2|dup|用户级缓冲区|模拟缓冲区
  • leetcode 69. x 的平方根
  • C++里memset的使用
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • CSS 提示工具(Tooltip)
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Python利用正则抓取网页内容保存到本地
  • springboot_database项目介绍
  • vue:响应原理
  • Wamp集成环境 添加PHP的新版本
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 记一次用 NodeJs 实现模拟登录的思路
  • 说说动画卡顿的解决方案
  • 一起参Ember.js讨论、问答社区。
  • 应用生命周期终极 DevOps 工具包
  • 用jquery写贪吃蛇
  • elasticsearch-head插件安装
  • ​力扣解法汇总946-验证栈序列
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #DBA杂记1
  • #知识分享#笔记#学习方法
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (7) cmake 编译C++程序(二)
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (十三)Maven插件解析运行机制
  • (一)80c52学习之旅-起始篇
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (原創) 未来三学期想要修的课 (日記)
  • (转载)hibernate缓存
  • (自用)gtest单元测试
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET Framework杂记
  • .NET Standard 的管理策略
  • .Net程序帮助文档制作
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .NET性能优化(文摘)
  • @WebServiceClient注解,wsdlLocation 可配置
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛