使用 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 文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/48424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker Desktop安装

0 Preface/Foreward 1 安装 1.1 运行docker安装包 安装完Docker Desktop后,运行Docker Desktop,出现WSL 2安装不完整情况,具体情况如下: 解决方法:旧版 WSL 的手动安装步骤 | Microsoft Learn 也可以直接下载新的安…

Java设计模式:从单例到观察者

设计模式是解决特定问题的通用解决方案。在Java编程中,设计模式可以帮助我们编写更灵活、可维护和可扩展的代码。本文将介绍几种常见的Java设计模式,包括单例、工厂、策略、装饰器和观察者模式。 1. 单例模式 单例模式是一种创建型模式,它确…

2023发卡商城源码,最新自助下单彩虹云商城系统免授权无后门源码

# 彩虹自助下单系统 > PHP版本: > 7.0.1 ____ * 去除所有授权验证 * 支持自定义说说接口 * 去除后台广告与更新 * 可自定义易支付接口 ____ >安装教程: > 1、上传源代码到空间或服务器,并确保权限可读写。 > 2、上传完成后,使用浏览器…

gcd之和(一维)

gcd之和 求 ∑ i 1 n gcd ⁡ ( n , i ) \sum_{i1}^{n}\gcd(n,i) ∑i1n​gcd(n,i)。 那么我们这一道题讲得详细一点。因为这一道题目的 n ≤ 1 0 9 n \leq 10^9 n≤109。这也就导致了一些算法是过不了的,那么我们就先从最简单的讲起: 对每一项来一遍 …

VulnHub:cengbox1

靶机下载地址,下载完成后,用VirtualBox打开靶机并修改网络为桥接即可搭建成功。 信息收集 主机发现和端口扫描 扫描攻击机(192.168.31.218)同网段存活主机确认目标机ip,并对目标机进行全面扫描。 nmap 192.168.31.…

springboot 项目整合 AI (文心一言)

百度智能云网址:https://cloud.baidu.com/?fromconsole 注册——个人认证——登录成功 第一步:点击千帆大模型平台 ​ 第二步:点击应用接入——创建应用 ​ 第三步:点击接口文档——API列表——可以点击指定模型进行查看调…

H3CNE(路由基础、直连路由与静态路由)

目录 6.1 直连路由 6.2 静态路由理解性实验 6.2.1 配置直连路由 6.2.2 配置静态路由 6.3 路由表的参数与比较 6.3.1 优先级的比较 6.3.2 开销的比较 6.4 路由器中的等价路由、浮动路由、默认路由 6.4.1 等价路由 6.4.2 浮动路由 6.4.3 默认路由(缺省路由) 6.1 直连路…

QT JSON使用实例

下面是一个使用Qt框架的示例代码,展示如何获取仪器的状态,将其打包成JSON格式,保存到当前目录下的JSON文件中,然后通过FTP发送该文件。 1. 准备工作 确保你已经安装了Qt,并创建一个新的Qt Console项目或Qt Widgets项目…

ChatGPT:ChatOpenAI 是什么?

ChatGPT:ChatOpenAI 是什么? ChatOpenAI 是 LangChain 库中的一个类,专门用于与 OpenAI 的 Chat 模型(例如 GPT-4)进行交互。LangChain 是一个用于构建自然语言处理应用的框架,它提供了与不同语言模型&…

Unity监听某个值是否改变,c#数值监听器

Unity监听某个值是否改变,c#数值监听器 功能监听某个值的变化,当监听到变化之后执行对应的注册事件。 需要创建一个监听器对应,每监听一个值就要创建一个监听器对象,监听器是泛型,需要填写监听的类型。 创建监听器完毕…

Python爬虫:代理ip电商数据实战

引言:数据访问管理引发的烦恼 作为一名Python博主,爬虫技能对于获取和分析数据至关重要,经常爬一下,有益身心健康嘛。爬虫技术对很多人来说,不仅仅是一种工具,更像是一种艺术,帮助我们从互联网…

Pytorch学习笔记——在GPU上进行训练

文章目录 1. 环境准备2. 导入必要库3. 加载数据集4. 定义简单的神经网络模型5. 检查和设置GPU设备6. 定义损失函数和优化器7. 训练模型8. 全部代码展示及运行结果 1. 环境准备 首先,确保PyTorch已经安装,且CUDA(NVIDIA的并行计算平台和编程模…

org.springframework.context.annotation.ImportSelector的作用是什么?

org.springframework.context.annotation.ImportSelector 是 Spring 框架中一个非常有用的接口,它允许你根据条件动态地向 Spring 应用上下文中导入配置类。这对于开发模块化、可扩展且可配置的 Spring 应用来说非常有用。 如何使用 ImportSelector 创建 ImportSel…

Leetcode热题100 Day2

六、三数之和 这一题最关键的想法是把第二层嵌套和第三层嵌套合并为同一层嵌套,合并后即可使用两指针法。但是即使这样我在写的时候还是花了很多时间,一个是边界条件的处理(尤其是连续有相同值的处理)以及我发现了leetcode的编译…

用PyTorch从零开始编写DeepSeek-V2

DeepSeek-V2是一个强大的开源混合专家(MoE)语言模型,通过创新的Transformer架构实现了经济高效的训练和推理。该模型总共拥有2360亿参数,其中每个令牌激活21亿参数,支持最大128K令牌的上下文长度。 在开源模型中&…

java-双亲委派机制

Java虚拟机(JVM)中的类加载器(Class Loader)负责将类(.class文件)加载到JVM中,以便Java程序能够使用这些类。在JVM中,类加载器被组织成一种层次结构关系,这种层次结构关系…

vue3前端开发-小兔鲜项目-一些额外提醒的内容

vue3前端开发-小兔鲜项目-一些额外提醒的内容!今天这一篇文章,是提醒大家,如果你正在学习小兔鲜这个前端项目,有些地方需要提醒大家,额外注意的地方。 第一个:就是大家在进入二级页面后,有一个分…

深度学习-7-使用DCGAN生成动漫头像(实战)

参考什么是GAN生成对抗网络,使用DCGAN生成动漫头像 1 什么是生成对抗网络 生成对抗网络,英文是Generative Adversarial Networks,简称GAN。 GAN是一种无监督的深度学习模型,于2014年首次被提出。该算法通过竞争学习的方式生成新的、且与原始数据集相似的数据。 这些生成…

公司培训总结:拒绝倦怠,探索工作中的自驱力

拒绝倦怠,探索工作中的自驱力 在快节奏、高压力的现代职场环境中,感到迷茫和缺乏动力是许多人的共同体验。工作中的倦怠感可能会导致生产力下降、职业发展受阻,甚至影响到个人的心理健康。然而,挖掘并激发我们的内在驱动力&#…

昇思25天学习打卡营第19天|生成式-DCGAN生成漫画头像

打卡 目录 打卡 GAN基础原理 DCGAN原理 案例说明 数据集操作 数据准备 数据处理和增强 部分训练数据的展示 构造网络 生成器 生成器代码 ​编辑 判别器 判别器代码 模型训练 训练代码 结果展示(3 epoch) 模型推理 GAN基础原理 原理介…