【协作提效 Go - gin ! swagger】
什么是swagger
Swagger 是一个用于设计、构建、记录和使用 RESTful Web 服务的工具集。它的主要作用包括:
- API 文档生成:Swagger 可以自动生成详细的 API 文档,包括每个端点的请求和响应格式、参数、状态码等。这使得开发者和用户可以轻松理解和使用 API。
- API 测试:Swagger 提供了一个交互式的界面(Swagger UI),用户可以直接在浏览器中测试 API,而无需编写额外的客户端代码。
- API 设计:Swagger 支持 API 的设计和规范定义,开发者可以使用 Swagger 定义 API 的结构和行为,然后生成相应的文档。
- 一致性和标准化:通过使用 Swagger,团队可以确保 API 的设计和实现符合一致的标准和规范,从而提高代码质量和可维护性。
- 协作:Swagger 提供了一个统一的 API 描述格式(OpenAPI Specification),使得开发团队、测试团队和文档团队可以更好地协作。
而对于我们的研发团队来说,swagger可以清晰的定义接口,即是代码也是文档,大大提升了前后端沟通的效率,团队内协作的效率!
而Go - Gin框架支持Swagger,下面一步一步来看下如何使用 swaggo/gin-swagger
库来生成和展示接口文档。
步骤
步骤 1:安装依赖
首先,安装依赖
安装swag
CLI工具
go install github.com/swaggo/swag/cmd/swag@latest
安装 gin-swagger
库
go get -u github.com/swaggo/gin-swagger
go get -u github.com/swaggo/files
步骤 2:初始化项目
创建一个新的Gin项目或在现有项目中添加Swagger支持。
go mod init ${your-project-name}
步骤 3:添加注释
在你的代码中添加Swagger注释。例如:
package mainimport ("go-gin-swagger-demo/docs""net/http""github.com/gin-gonic/gin"swaggerfiles "github.com/swaggo/files"ginSwagger "github.com/swaggo/gin-swagger"
)// @BasePath /api/v1// PingExample godoc
// @Summary ping example
// @Schemes
// @Description do ping
// @Tags example
// @Accept json
// @Produce json
// @Success 200 {string} Helloworld
// @Router /example/helloworld [get]
func Helloworld(g *gin.Context) {g.JSON(http.StatusOK, "helloworld")
}// @Tags example
// @Accept json
// @Produce json
// @Success 200 {object} map[string]string
// @Router /example/hi [get]
func Hi(c *gin.Context) {c.JSON(200, gin.H{"message": "hi",})
}func main() {r := gin.Default()docs.SwaggerInfo.BasePath = "/api/v1"v1 := r.Group("/api/v1"){eg := v1.Group("/example"){eg.GET("/helloworld", Helloworld)eg.GET("/hi", Hi)}}r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerfiles.Handler))r.Run(":8080")}
步骤 4:生成Swagger文档
由于swag没被安装到全局,先查看swag所在位置
go env GOPATH
运行swag init
命令生成Swagger文档:
${go env GOPATH}/swag init
这将生成docs
目录,其中包含Swagger文档。
步骤 5:运行项目
运行你的Gin项目:
go run main.go
然后在浏览器中访问http://localhost:8080/swagger/index.html
,你将看到Swagger UI。
效果展示
通过这些步骤,你可以在Gin项目中集成Swagger,并生成和展示API文档。
相关文章:
![](https://img-blog.csdnimg.cn/img_convert/200b69bea9f4cd9693b58271fcefd5ac.webp?x-oss-process=image/format,png)
【协作提效 Go - gin ! swagger】
什么是swagger Swagger 是一个用于设计、构建、记录和使用 RESTful Web 服务的工具集。它的主要作用包括: API 文档生成:Swagger 可以自动生成详细的 API 文档,包括每个端点的请求和响应格式、参数、状态码等。这使得开发者和用户可以轻松理…...
![](https://www.ngui.cc/images/no-images.jpg)
栈和队列——3.滑动窗口最大值
力扣题目链接 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。 示例: 输入:nums[1,3,-1,-3,5,3,6,7],k 3 …...
![](https://www.ngui.cc/images/no-images.jpg)
嵌入式智能手表开发系列文章之开篇
不好意思,朋友们,我回来了。想想已经断更了好久了。在这段断更的日子里。开拓了个新领域,不搞android 产品,而是去搞嵌入式智能手表啦。 接下来我会用几篇文章来介绍下我对这个领域的看法体会,以及我自己所负责领域的…...
![](https://www.ngui.cc/images/no-images.jpg)
24.8.2数据结构|双链表
双链表 1、定义结构:2个指针域、数据域 2、初始化:创建一个含有N个结点的带头结点双链表head (双链表头结点的前驱与和尾节点的后继与置为空) 3、求表长:返回双链表head的长度 4、取元素:取出双链表head中…...
![](https://i-blog.csdnimg.cn/direct/d9f4300e75e741d4bd366256fd68fc87.gif#pic_center)
RabbitMQ高级特性 - 事务消息
文章目录 RabbitMQ 事务消息概述实现原理代码实现不采用事务采用事务 RabbitMQ 事务消息 概述 RabbitMQ 的 AMQP 协议实现了事务机制,允许开发者保证消息的发送和接收时原子性的,也就是说,要么消息全都发送成功,要么全都发送失败…...
![](https://www.ngui.cc/images/no-images.jpg)
leetcode:心算挑战
题目: 心算项目的挑战比赛中,要求选手从N张卡牌中选出cnt张卡牌,若这cnt张卡牌数字总和为偶数,则选手成绩「有效」且得分为cnt张卡牌数字总和。给定数组cards和cnt,其中cards[i]表示第i张卡牌上的数字。 请帮参赛选手计…...
![](https://i-blog.csdnimg.cn/direct/1ce18bafa8e74d609fb2692bdf56aa52.png)
docker部署java项目(war包方式)
场景描述:java项目war包,在开发开电脑上使用dockerfile构建镜像,上传镜像到客户服务器中使用docker加载docker镜像,然后部署。 目录 一、本地环境安装 docker git 二、服务器环境安装 docker 三、构建docker镜像(win系统) 四、注意事项 (1)系统架构 (2)使…...
![](https://i-blog.csdnimg.cn/direct/d3e3bdbc01864574813fbea0398cf03b.png)
jsp 自定义taglib
一、简介 我们在javaWeb开发中,经常会用到jsp的taglib标签,有时候并不能满足我们的实际需要,这就需要我们自定义taglib标签, 二、开发步骤 1、编写control方法,继承BodyTagSupport 2、定义zdytaglib.tld标签文件 3、…...
![](https://i-blog.csdnimg.cn/direct/b08a72107a2642fab932d27b15042eed.png)
从一到无穷大 #32 TimeCloth,云上的快速 Point-in-Time Recovery
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 引言解决方案FAST FINE-GRAINED PITRLog FilterInter-Record Dependency ResolutionL…...
![](https://www.ngui.cc/images/no-images.jpg)
时间序列论文1——Forecasting at Scale
目录 0. AI总结0.1 文章概述0.2 研究背景0.3 研究思路0.4 研究结论与讨论1. Introduction2 Features of Business Time Series3 The Prophet Forecasting Model3.1 The Trend Model3.2 Seasonality3.3 Holidays and Events3.4 Model Fitting3.5 Analyst-in-the-Loop Modeling4 …...
![](https://i-blog.csdnimg.cn/direct/0245e9a33a1c471e8f6d0d5790f1f6f1.png)
HDFS常用命令
HDFS常用命令 1.HDFS命令介绍1.1基本语法格式1.2常用命令 1.HDFS命令介绍 HDFS 提供了一组命令行工具,用于管理和操作 HDFS 文件系统。 1.1基本语法格式 hdfs dfs -<命令> [选项] <参数>1.2常用命令 1.显示<path>指定的文件的详细信息。 had…...
![](https://i-blog.csdnimg.cn/direct/d4630e9ad2c9438d9ab9409e2999530b.png)
请问如何做好软件测试工作呢?
一、明确测试目标和范围 理解测试目的:在开始测试之前,首先要明确测试的目标和范围,确保测试计划 与需求相匹配。这有助于测试人员聚焦在关键功能上,避免浪费时间和资源。制定详细的测试计划:根据项目需求࿰…...
![](https://www.ngui.cc/images/no-images.jpg)
单片机开发与Linux开发的区别
引言 单片机(MCU)和Linux开发是嵌入式系统领域的两大主要方向。它们在硬件平台、开发环境、应用场景和开发难度上存在显著区别。本文将系统性地比较单片机开发和Linux开发,探讨它们的主要区别及各自的应用场景和难度体系。 一、基本概念 1…...
![](https://i-blog.csdnimg.cn/direct/48d85b3409064ba581fb99737ad0ad1a.png)
【机器学习】回归类算法-相关性分析
一、前言 前面的几篇博客我们学习了分类算法,今天我们来了解一下回归类的算法吧。首先我们来谈谈两者有什么区别,首先是我们在之前的分类算法,这类算法可以将让我们学会如何将不同的数据划分到不同的类里面,输出的是一些离散的值。…...
![](https://i-blog.csdnimg.cn/direct/c33bcd3d9870415a93e5a61be77c55f0.png)
java基础 之 集合与栈的使用(三)
文章目录 Map接口(一)实现类:HashMap特点HashMap集合的一些方法 (二)实现类: TreeMap特点【自然排序】代码【定制排序】代码TreeMap集合的一些方法 HashMap 和 TreeMap的区别 前文回顾: 戳这里 …...
![](https://i-blog.csdnimg.cn/direct/453377bee2cb4383af7f9c707c7f3f1d.png)
JDK-java.nio包详解
JDK-java.nio包详解 概述 一直以来Java三件套(集合、io、多线程)都是最热门的Java基础技术点,我们要深入掌握好这三件套才能在日常开发中得心应手,之前有编写集合相关的文章,这里出一篇文章来梳理一下io相关的知识点。…...
![](https://www.ngui.cc/images/no-images.jpg)
虚拟机与服务器的区别是什么?虚拟机与服务器的区别和联系
服务器和虚拟机是两个不同的概念,它们在计算机领域有着不同的含义和作用。今天飞飞就和你分享虚拟机和服务器的区别和联系,希望可以帮助到你~ 1、物理形态 a)服务器是实实在在的物理设备,拥有独立的硬件架构。如CPU、硬盘、内存等 b)虚拟机…...
![](https://www.ngui.cc/images/no-images.jpg)
Linux CentOS stream9 命令
初学linux,对字符界面的命令并不陌生。问到什么是linux命令直接答cd、pwd、ls是linux命令。对于命令的定义并熟悉,也不太关心命令的底层执行逻辑,更关心录入命令,马上获取需要的结果。 本文就命令的定义、分类或执行优先级作一简单介绍。 一、定义 搜索网上对linux命令的…...
![](https://i-blog.csdnimg.cn/direct/b3f05c42210d49b39f5558143d5531c3.png)
JavaScript基础——JavaScript变量声明
变量是存储数据的容器,可以变的量,值可以改变,在JavaScript中,变量声明的关键字有var、let,其中,var是ES5的语法,let是ES6的语法,变量需要先声明,在使用。 声明一个age变…...
![](https://i-blog.csdnimg.cn/direct/c0ea57f80e0d411b87dfd40e14c88b46.jpeg)
ModuleNotFoundError: No Module Named openai
题意:Python 无法在环境中找到名为 openai 的模块 问题背景: import requests from bs4 import BeautifulSoup import openai #write each line of nuclear.txt to a list with open(nuclear.txt, r) as f:lines f.readlines()#remove the newline cha…...
![](https://img-blog.csdnimg.cn/img_convert/7f7e69a05d41a9499aa4a6fdf51a39ef.png)
基于SpringBoot+Vue的校园便利平台(带1w+文档)
基于SpringBootVue的校园便利平台(带1w文档) 基于SpringBootVue的校园便利平台(带1w文档) 本平台采用B/S架构、采用的数据库是MySQL,使用JAVA技术开发。该平台的开发方式无论在国内还是国外都比较常见,而且开发完成后使用普遍,可以给平台用户…...
![](https://i-blog.csdnimg.cn/direct/966ab94ff3af4a5fbe47cffb70053eab.png#pic_center)
串口应用编程-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板
串口应用编程 串口应用编程介绍 介绍 串口定义:串行接口,数据按顺序传输 串口特点:通信线路简单,距离远,速度较低 应用领域:常用工业接口 Linux系统中的作用 作为标准输入输出设备 系统打印信息输出 用户与系统交互 串口与终端:在Linux系统中,串口被视为一种终端&#…...
![](https://i-blog.csdnimg.cn/direct/eac92f75963647a8ad25c81347fec5da.png)
Canvas实现截图
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>canvas实现截图功能</title><style>.ca…...
![](https://i-blog.csdnimg.cn/direct/46d5d1cce5864b43a9ad85b63eb84ad6.png)
Python高性能计算:进程、线程、协程、并发、并行、同步、异步
这里写目录标题 进程、线程、协程并发、并行同步、异步I/O密集型任务、CPU密集型任务 进程、线程、协程 进程、线程和协程是计算机程序执行的三种不同方式,它们在资源管理、执行模型和调度机制上有显著的区别。以下是对它们的详细解释和比较: 进程&…...
![](https://www.ngui.cc/images/no-images.jpg)
kafka基本操作
Kafka详解 一、Kafka概述 Kafka是一个开源的分布式事件流平台,它主要用于高性能数据管道、流分析、数据集成和关键任务应用。Kafka最初被设计为一个分布式的基于发布/订阅模式的消息队列,但随着时间的推移,它已发展成为一个功能强大的流处理…...
![](https://i-blog.csdnimg.cn/direct/f7e8f2a8ab934d71877340b63279d064.png)
JavaFX布局-Accordion
JavaFX布局-Accordion 一个可扩展的面板,包括标题、内容与TitledPane配合一起使用 public static Accordion demo1() {// 创建AccordionAccordion accordion new Accordion();// 内边距accordion.setPadding(new Insets(10, 10, 10, 10));for (int i 1; i < 1…...
![](https://img-blog.csdnimg.cn/img_convert/0220d7f8f1e3ecc35bdb7f6e532a8b31.webp?x-oss-process=image/format,png)
【轨物方案】评估光伏组件发电性能一致性方案
光伏电站建设后运行周期长达二十多年,对于电站运营者来说,基础设施的稳定、安全、高效的运行是至关重要的。然而从近些年光伏的发展过程中看到,在电站规划到后期运维整个过程中可能存在着诸多问题,如设备选型不当、施工建设质量差…...
![](https://i-blog.csdnimg.cn/direct/76d3759080c6401a9f99be0d27368fec.png)
安全基础学习-keil调试汇编代码
初始目的是为了通过汇编编写CRC功能。 但是基础为0,所以目前从搭建工程开始记录。 大佬绕路。 (一)创建项目 1. 新建项目 打开 Keil uVision。选择 Project -> New uVision Project 创建一个新项目。选择你的目标设备(如 ARM Cortex-M 系列处理器),我这里一开始选择…...
![](https://www.ngui.cc/images/no-images.jpg)
Unity复制对象时让私有变量也被复制的简单方法
Unity复制对象时,如果一个变量为公共变量(public),那么这个变量的值会被复制到新的对象中去,但是如果一个变量是私有变量(private),默认是不会被复制的,如果希望被复制&a…...
![](https://i-blog.csdnimg.cn/direct/dc6e2ceecdf54074a85bcf6b4216bd4f.png)
Flink 实时数仓(二)【DIM 层搭建】
1、DIM 层搭建 1.1、设计要点 DIM层设计要点: DIM层存的是维度表(环境信息,比如人、场、货等)DIM层的数据存储在 HBase 表中DIM层表名的命名规范为dim_表名 DIM 层表是用于维度关联的,要通过主键(维度外…...
![](http://f.hiphotos.baidu.com/exp/w=500/sign=fa57447d0a46f21fc9345e53c6256b31/0dd7912397dda14480a96634b2b7d0a20df48697.jpg)
江苏连云港做网站/在线代理浏览网址
系统盘里带着那个啊具体步骤。。1运行GHOST,进入GHOST主页面 2在主页面单击OK按钮后依次执行Local\Partition\To lmage,命令 3接下来选择硬盘.用户装了几个硬盘,则此处就会出现几个选项. 4接下来,选择硬盘中的分区.选择需要的分区后,单击OK进入下一个步骤 5选择存放的地址和文件…...
![](/images/no-images.jpg)
做购物商城类网站需要/有没有推广app的平台
这篇文章是转载的,为了便于查找一些指令,贴在这里。 转自:http://blog.csdn.net/canfengxiliu/article/details/20144119 --------------------- 声明 : 文章是看<<Android软件安全与逆向分析>> 的所写笔记。 Dalvik指…...
![](/images/no-images.jpg)
网站开发遵循/免费的外贸b2b网站
45.买股票的最佳时机 题目描述 假设你有一个数组,其中第\ i i 个元素是股票在第\ i i 天的价格。 你有一次买入和卖出的机会。(只有买入了股票以后才能卖出)。请你设计一个算法来计算可以获得的最大收益。 输入 [1,4,2]返回值 3输入 [2…...
![](https://img-blog.csdnimg.cn/img_convert/09b9bbfb3c9c8e72bc34bb0feaa469bf.gif)
做网站主播要什么条件/小说搜索风云榜排名
苯四乙酸 cas1820793-31-4 齐岳中间体|单体材料 英文名称: NA 中文名称: 苯四乙酸 MF: C14H14O8 MW: 310.26 CAS: 1820793-31-4 氟代功能单体53 丙烯酸三氟乙酯 407-47-6 TFEA 58519-06-5 甲基丙烯酸2,2,2-三氟…...
![](/images/no-images.jpg)
龙岗住房建设局网站/无锡百度竞价推广
JSON&XML: JSON----- //英译 Serialization:序列化 perform:执行 segue:继续 IOS5后 NSJSONSerialization解析 解析JSON SBJSON JSONKit touchJson的第三方库 性能:NSJSONSerial…...
![](/images/no-images.jpg)
网站关键词被百度屏蔽怎么办/广告推广方式
从树中的某一个顶点v0开始,构造生成树的算法执行过程: 1)将v0到其他顶点的所有边当做侯选边 2)重复以下步骤n-1次,使得其他n-1个顶点纳入生成树 从候选边中选出权值最小的边输出,并将与该边另一端的顶点v纳…...