Golang使用Swag搭建api文档

1. 简介

GinGolang目前最为常用的Web框架之一。
公司项目验收需要API接口设计说明书(Golang后端服务基于Gin框架编写),编写任务自然就落到了我们研发人员身上。
项目经理提供了文档模板,让我们参考模板来手动编写,要求两天内完成,时间紧任务重。

看了下文档中API接口设计内容,很简单,但是接口数量太多还需要调整文档格式,手动编写两天肯定搞不定。
发现API接口设计内容和swagger文档格式很相近,那能不能使用工具生成swagger文档后再转换为word格式呢?

和项目经理沟通了我的想法,项目经理回答说,内容丰富、格式统一就行,不要求完全参考模板中的格式来。
既然这样,那就开干吧!

2. 生成swagger.json文档

本章节仅为演示操作步骤,编写得很简洁。如果需要进一步的了解请查阅【4. 参考资料】章节

2.1. 安装swag

首先需要安装swag命令行工具:go install github.com/swaggo/swag/cmd/swag@latest

2.2. 新建示例项目

比如新建swagdoc项目:go mod init swagedoc

2.3. 新建main.go文件并输入示例代码

package main

import (
    "net/http"

    "swagdoc/docs"

    "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")
}

func main() {
    r := gin.Default()
    docs.SwaggerInfo.BasePath = "/api/v1"
    v1 := r.Group("/api/v1")
    {
        eg := v1.Group("/example")
        {
            eg.GET("/helloworld", Helloworld)
        }
    }
    r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerfiles.Handler))
    r.Run(":8080")
}

2.4. 生成swagger.json文档

执行命令swagger init命令生成swagger.json文档。文件目录结构如下图所示:

示例项目文件目录结构

2.5. 访问api文档

执行下列命令运行示例程序:

go mod tidy
go run ./main.go

在浏览器中访问 api文档 :

在这里插入图片描述

可以通过浏览器直接访问api:

在这里插入图片描述

在这里插入图片描述

3. 常见问题

3.1. Error parsing type definition报错如何解决?

若出现解析类型定义的错误,需要在执行swage init时加上对应的选项:

在这里插入图片描述

例如:swag init --parseDependency --parseInternal

3.2. 如何编写api注释?

参考 声明式注释格式。

4. 将swagger.json文档转换为word文档

可以使用 swagger转word文档在线工具 来进行转换。

如果在线工具不能使用,可以自行参考网上教程在本地搭建转换工具来进行转换,就不在此赘述了。

转换后的word文档效果图如下所示:
在这里插入图片描述

5. 参考资料

如何使用Swag将Go的注释转换为Swagger文档?

源码示例

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

教机械臂搭积木?《多Agent系统引论》第4章 实用推理Agent 小结

4.0 前言 Agent起作用,不仅仅是逻辑推理的一种、一个过程,还有其他过程在起作用。为了建立贴合实际的Agent,我们需要提出一种新的概念的模型。这就是实用推理型Agent。 4.1 推理分两步 这种Agent把推理的过程分为了两步,一步是理…

Nginx重写功能和反向代理

目录 一、重写功能rewrite 1. ngx_http_rewrite_module模块指令 1.1 if 指令 1.2 return 指令 1.3 set 指令 1.4 break 指令 2. rewrite 指令 3. 防盗链 3.1 实现盗链 3.2 实现防盗链 4. 实用网址 二、反向代理 1. 概述 2. 相关概念 3. 反向代理模块 4. 参数配…

鸿蒙开发-UI-图形-绘制自定义图形

鸿蒙开发-UI-组件 鸿蒙开发-UI-组件2 鸿蒙开发-UI-组件3 鸿蒙开发-UI-气泡/菜单 鸿蒙开发-UI-页面路由 鸿蒙开发-UI-组件导航-Navigation 鸿蒙开发-UI-组件导航-Tabs 鸿蒙开发-UI-图形-图片 鸿蒙开发-UI-图形-绘制几何图形 文章目录 前言 一、使用画布组件绘制自定义图形 1.初…

Linux进程间通信(2)

目录 前言: 正文 1.命名管道 1.1创建及使用 1.2命名管道的工作原理 1.3命名管道与匿名管道的区别 2.命名管道特点及应用场景 2.1特点 2.2场景 3.命名管道实操 3.1实现文件拷贝 3.2实现进程控制 总结: 前言: 管道中除了…

解锁财务信任,掌握企业业务合作中的倾听艺术

企业在经营管理过程中,经常会思考如何才能成为一个完美的财务业务融合体,实现业务合作的最大价值。当我们置身于企业战略规划的构建过程中,就会明显的感觉到,获得财务信任有助于指导团队做出重大决策并推动企业未来的行动。市场和…

读人工不智能:计算机如何误解世界笔记04_数据新闻学

1. 计算化和数据化的变革 1.1. 每一个领域都在进行计算化和数据化的变革 1.1.1. 出现了计算社会科学、计算生物学、计算化学或其他数字人文学科 1.1.2. 生活已走向计算化,人们却一点也没有变 1.2. 在如今的计算化和数据化世界中,调查性新闻的实践必须…

图神经网络的背后:HOW POWERFUL ARE GRAPH NEURAL NETWORKS?

PNACONV - 知乎这是一篇非常接地气的paper,也具有很好的应用价值。 1 aggregators文中提到不同的聚合函数实际上反应的信息是不同的,gin中也有提到类似的内容。 风浪:图神经网络的背后:HOW POWERFUL ARE GRAPH NEURAL NETWORK…ht…

自学Python第十五天-常用的HTML解析工具:bs4、xpath、re

自学Python第十五天-常用的HTML解析工具:bs4、xpath、re BS4安装和引入开始使用find_all() 方法获取标签find() 方法获取标签select() 方法获取标签,css 选择器从标签中获取数据 XPathxpath 基础xpath 语法规则lxml 模块xpath() 方法 REmatch() 方法sear…

【黑马程序员】STL之stack与queue常用操作

stack容器 stack基本概念 stack是一种先进后出的数据结构&#xff0c;它只有一个出口 栈中只有顶端元素才可以被外界使用&#xff0c;因此栈不支持遍历操作 stack常用接口 stack代码示例 #include <iostream> #include <stack>using namespace std;void test()…

AI:138-开发一种能够自动化生成艺术品描述的人工智能系统

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…

【软件工具】Typora 免费版下载安装Markdown编辑器-Win10快速安装

目录 下载安装激活配置图片路径管理高亮显示自动保存 使用教程 前言 Typora&#xff0c; 是一款好用的编辑器和阅读器。这里为大家找了一个可使用版本&#xff0c;安装过程十分简单&#xff0c;亲测有效&#xff0c;不浪费大家时间&#xff0c;现在将Typora分享给大家免费使用。…

C# OpenVino Yolov8 Pose 姿态识别

目录 效果 模型信息 项目 代码 下载 效果 模型信息 Model Properties ------------------------- date&#xff1a;2023-09-07T17:11:43.091306 description&#xff1a;Ultralytics YOLOv8n-pose model trained on /usr/src/app/ultralytics/datasets/coco-pose.yaml a…

visual stdio 使用ATL简单使用COM组件

先试用visual stdio创建ATL项目 选择第一个创建ATL简单对象 ProgId也需要添加一下&#xff0c;默认创建完之后添加方法 STDMETHODIMP AddNumber(LONG __num, LONG* result);添加定义 STDMETHODIMP_(HRESULT __stdcall) CATLSimpleObject::AddNumber(LONG __num, LONG* r…

智能充电桩案例分析——交流充电桩

随着电动汽车的发展&#xff0c;充电桩也成为当下的一个很热门的工业产品。我们初步接触充电桩&#xff0c;有了点滴的感受。 先简单说说容易一点的交流充电桩。就是通过市电&#xff08;220V,50赫兹&#xff09;给电动汽车提供充电的能源来源。很容易理解&#xff0c;交流…

高数考研 -- 公式总结(更新中)

1. 两个重要极限 (1) lim ⁡ x → 0 sin ⁡ x x 1 \lim _{x \rightarrow 0} \frac{\sin x}{x}1 limx→0​xsinx​1, 推广形式 lim ⁡ f ( x ) → 0 sin ⁡ f ( x ) f ( x ) 1 \lim _{f(x) \rightarrow 0} \frac{\sin f(x)}{f(x)}1 limf(x)→0​f(x)sinf(x)​1. (2) lim ⁡…

产品经理学习-产品运营《什么是SOP》

目录 什么是SOP 如何执行SOP 执行SOP的重点 什么是SOP SOP就是项目流程操作的说明书 日常工作中的例行操作&#xff1a; 例行操作是指&#xff0c;在每一天&#xff0c;针对每一个用户&#xff0c;在每个项目之中&#xff0c;都必须完成的操作&#xff0c;这些必须完成的操…

CleanMyMac2024永久免费mac电脑版本安装包下载

CleanMyMac 4 for Mac&#xff1a;细致入微的功能介绍&#xff0c;CleanMyMac 4 for Mac作为一款系统清理和优化工具&#xff0c;提供了丰富而细致的功能&#xff0c;旨在满足Mac用户在不同场景下的清理和优化需求。以下是对CleanMyMac 4功能的更加细化介绍&#xff1a; CleanM…

MySQL的SQL语句

1.MySQL连接 连接命令一般是这样写的 mysql -h$ip -P$port -u$user -p比如:mysql -h127.0.0.1 -P3306 -uroot -p -h 指定连接的主机地址&#xff1b;-P 指定连接端口号&#xff1b;-u 指定用户名 -p指定用户名密码 2.SQL分类 DDL(Data Definition Language) 数据定义语言&…

【数据结构】链表面试题

203.移除链表元素 206.反转链表 876.链表的中间结点 牛客.链表中倒数第k个结点 21.合并两个有序链表 牛客.链表分隔 牛客.链表的回文结构 160.相交链表 141.环形链表 142.环形链表2 1. 移除链表元素 题目描述 思路&#xff1a; 定义一个指针cur遍历整个链表&#xff0c;一个ta…

大开眼界的4款黑科技软件,功能强大,网友:越用越上瘾

作为一名热衷于探索软件的搞机爱好者&#xff0c;小蛙在各大软件论坛间游走&#xff0c;旨在帮助大家在纷繁复杂的Windows软件世界中&#xff0c;寻找到那些真正值得安装的神器。 在忙碌的现代生活中&#xff0c;我们的磁盘空间和时间都显得尤为宝贵&#xff0c;没必要下一些鸡…