问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Gin+Swagger快速生成API文档

发布网友 发布时间:2024-09-26 19:23

我来回答

1个回答

热心网友 时间:2024-11-22 04:47

一.背景

在restful前后端项目进行接口对接的时候,需要有明确的接口文档,此时单独针对接口编写接口文档,耗时耗力,切代码修改后,还需要维护接口文档,此时容易出现文档不统一的情况,将接口文档直接写在代码中是一种比较好的方式。

swagger就是解决这种问题,开发人员只需要按照特定规范在编写接口代码时写上swagger注释,利用swagger生成接口文档。

二.SwaggerUI简介

Swagger是一个API生成工具,可以生成文档。Swagger是通过编写yaml和json来实现文档化。并且可以进行测试等工作。

通过swagger可以方便的生成接口文档,方便前端进行查看和测试。

三.项目集成3.1安装swag$gogetgithub.com/swaggo/swag/cmd/swag3.2生成文件

首次生成相关文件,后期代码修改过,添加swag注解后,也需要

#在go项目中(包含main.go)的目录,使用swaginit命令生成相关文件。$swaginit2021/09/2316:32:23Generateswaggerdocs....2021/09/2316:32:23GenerategeneralAPIInfo,searchdir:./2021/09/2316:32:26createdocs.goatdocs/docs.go2021/09/2316:32:26createswagger.jsonatdocs/swagger.json2021/09/2316:32:26createswagger.yamlatdocs/swagger.yaml3.3安装gin-swagger$goget-ugithub.com/swaggo/gin-swagger$goget-ugithub.com/swaggo/gin-swagger/swaggerFiles3.4集成

引入生成的docs包

在具体接口上根据规范swag编写接口描述

在路由中进行引入

再次执行swaginit更新接口

运行应用后,浏览器访问:http://localhost:8887/swagger/index.html

packagemainimport("github.com/gin-gonic/gin"swaggerFiles"github.com/swaggo/files"ginSwagger"github.com/swaggo/gin-swagger"_"github.com/swaggo/gin-swagger/example/basic/docs"//docsisgeneratedbySwagCLI,youhavetoimportit.)//@titleSwaggerExampleAPI//@version1.0//@descriptionThisisasampleserverPetstoreserver.//@termsOfServicehttp://swagger.io/terms///@contact.nameAPISupport//@contact.urlhttp://www.swagger.io/support//@contact.emailsupport@swagger.io//@license.nameApache2.0//@license.urlhttp://www.apache.org/licenses/LICENSE-2.0.html//@hostpetstore.swagger.io//@BasePath/v2funcmain(){r:=gin.New()url:=ginSwagger.URL("http://localhost:8080/swagger/doc.json")//TheurlpointingtoAPIdefinitionr.GET("/swagger/*any",ginSwagger.WrapHandler(swaggerFiles.Handler,url))r.Run()}

四.不同类型4.1请求4.1.1url参数//@Paramidpathinttrue"ID"//url参数:(name;参数类型[query(?id=),path(/123)];数据类型;required;参数描述)4.1.2body参数

例如json

//@Paramdatabodymodels.RegistryAuthtrue"请示参数data"4.2返回4.2.1字符串//@Success200{string}json"{"msg":"ok"}"4.2.2结构体返回//@Success200{object}models.Response"请求成功"//@Failure400{object}models.ResponseErr"请求错误"//@Failure500{object}models.ResponseErr"内部错误"五.实战5.1main函数添加全局//@titlesmartkm_api_imageSwaggerExample//@version1.0//@descriptionThisisasampleserverPetstoreserver.//@termsOfServicehttp://swagger.io/terms///@contact.nameAPISupport//@contact.urlhttp://www.swagger.io/support//@contact.emailsupport@swagger.io//@license.nameApache2.0//@license.urlhttp://www.apache.org/licenses/LICENSE-2.0.html//@hostpetstore.swagger.io//@BasePath/funcmain(){//启动服务run()}5.2函数级别5.2.1Get请求//@Summary查看迁移任务详细信息//@Description查看迁移任务详细信息//@Acceptjson//@Procejson//@Paramtask_idpathstringtrue"task_id"//@Success200{object}models.Response"请求成功"//@Failure400{object}models.ResponseErr"请求错误"//@Failure500{object}models.ResponseErr"内部错误"//@Router/task[get]5.2.2Post请求//@Summary创建镜像迁移任务//@Description创建镜像迁移任务//@Acceptjson//@Procejson//@Paramdatabodymodels.CreateTaskReqtrue"请示参数data"//@Success200{object}models.Response"请求成功"//@Failure400{object}models.ResponseErr"请求错误"//@Failure500{object}models.ResponseErr"内部错误"//@Router/task[post]5.2.3Delete请求//@Summary删除镜像迁移任务//@Description删除镜像迁移任务//@Acceptjson//@Procejson//@Paramdatabodymodels.TaskReqtrue"请示参数data"//@Success200{object}models.Response"请求成功"//@Failure400{object}models.ResponseErr"请求错误"//@Failure500{object}models.ResponseErr"内部错误"//@Router/task[delete]注意事项

在路由添加swagger的时候,需要引入项目生成的docs包

假如func方法头标注的swagger注释不正确,在执行swaginit会报错,自行根据报错信息去修改;

访问swagger控制台报错404pagenotfound,是因为没有添加swagger的路由

访问swagger控制台报错Failedtoloadspec,是因为没有import引入执行swaginit生成的swagger的docs文件夹;

参考链接

https://studygolang.com/articles/12354

https://github.com/go-swagger/go-swagger

https://github.com/swaggo/gin-swagger

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
山东沃尔德集团集团所辖公司介绍 齐鲁银行无忧贷和市民贷哪个好 什么叫补按揭 后按揭贷款什么意思 买房者续按揭有什么危害 加按揭是什么意思 八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... golang工程组件篇Api文档管理go-swagger之swag与gin集成 后端API 接口文档 Swagger 使用指南 极简开发,一键导入swagger,即刻开放你的API接口 照明灯开关关了灯还是亮怎么回事 家里的灯为什么关了还是有一点亮? 什么是无形资产的管理 无形资产核算是什么 无形资产审计的必要性有哪些 qq相册怎么删除啊? 哪里可以找回多多号? 多多号只知道初始密码其他的都不知道,打客服能找回号吗? 古代青楼女子腰上都会系一根红绳什么用意 古代红线意味着什么 多多号忘了怎么办?但密码记得。 在中国多少钱才算有钱人 33岁购买什么重疾险比较合适? 33岁购买什么保险性价比最高? 33岁人群最好购买什么重疾险? 教师资格证考试报名信息填写错了怎么办? 教师资格证报名学校班级填写出错了怎么办 教师资格证报名时填错学科了有影响吗 API管理工具Swagger介绍及Springfox原理分析 Python Flask 开发,Flask 的 Swagger 神器 —— Flask-RESTX_百度知... 一文读懂Swagger在线文档集成 求DNF第八章刺客加点、要求详细具体点…有理由。好的可以加分。不许复制... DNF第八章求 刺客的综合加点 要刷图和pk都不错的 最好有图 2023年吉林省省考成绩公布时间 2023年吉林省考笔试合格分数线公布 DNF第八章纯刷图刺客怎么加点 中国的六大师范院校是哪六个?我还想知道符合“211工程”和“985工程... dnf第八章刺客刷图加点!! DNF第八章新职业转刺客和死灵术士纯刷图加点怎么加 DNFACT8刺客完美加点!!! DNF国服第八章刺客纯PK加点以及技能栏的摆放 吉林省考历年进面分数线 psp《模拟人生2宠物当家》汉化版和《自由奔跑》下载地址(迅雷的)_百度... cad放样如何用 GBA模拟人生2宠物 完整版最好中文的直接给下载地址 关于PC游戏《模拟人生2 宠物当家》 模拟人生2宠物当家游戏简介 PSP模拟人生2:宠物当家怎么装啊? 香菇鸡肉酱的做法米线