Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >『No17: gin-swagger 构建自动化文档』

『No17: gin-swagger 构建自动化文档』

作者头像
谢伟
发布于 2018-08-02 08:15:18
发布于 2018-08-02 08:15:18
1.3K00
代码可运行
举报
文章被收录于专栏:GopherCoderGopherCoder
运行总次数:0
代码可运行

25.jpg

大家好,我叫谢伟,是一名程序员。

今天的主题:Swagger API 文档

首先问个问题, API 文档重不重要?

重要,前后端的交互一般流程是这样的,后端暴露出API后,交给前端,前端根据API的响应,编写前端页面,一定程度上API 是前后端的交互桥梁。

所以, 我觉得 API 文档很重要。

那么API 文档主要要包含哪些内容?

  • 路由:包括路径参数、请求参数、还是请求体参数
  • 动作:HTTP 请求动作,GET、POST、DELETE、PUT
  • 响应:请求之后的返回值包含哪些信息,一般是JSON

之前我也写过使用Beego 构建API 文档,现在发现Beego 体量太大了。稍有点需求就需要更改。

所以,我不太喜欢体量大的框架。

回顾下传统的做法是编写 swagger.yml 或者 swagger.json 文件。

beego API 自动化文档的做法是编写注释,注释内包含全局信息或者编写应用注释

今天介绍的是 gin 框架 和 gin-swagger 自动构建 API 文档。

手法和 beego 构建自动化API文档一样。编写全局信息和编写应用注释。


1. doc
2. 做法
  1. 要知道 swagger 注释的语法
  2. 如何在 gin 内怎么使用

注释语法这个,全靠查文档。对着文档来。

当然我觉得最好的方法是什么呢,是模仿,找一个别人已经写好的,修修改改,看看能不能编译通过,编译通过后是不是你预期的结果。不是的话,继续修修改改,再编译,再看是不是你希望的结果。如此反复。

效果图:

swagger.png

第一步:编写全局信息注释,在主函数上编写

格式:// @param info

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// @title Swagger Example API12222
// @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 petstore.swagger.io
// @BasePath /v1
func main() {
    r := gin.Default()
    r.GET("/docs/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
    r.GET("/hello/:name", Name)
    r.Run()
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
r.GET("/docs/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))

这个路由和响应需要有,路由随便的定义,但我觉得我这种方式一目了然,知道是文档。

其他注释对照着参考文档即可。

第二步:编写应用注释

即在响应函数的上方编写注释

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
type Message struct {
    MessageInfo string `json:"message"`
}

func (m *Message) Serializer()Message{
    return Message{
        MessageInfo: m.MessageInfo,
    }

}


// Name will print hello name
// @Summary Print
// @Accept json
// @Tags Name
// @Security Bearer
// @Produce  json
// @Param name path string true "name"
// @Resource Name
// @Router /hello/{name} [get]
// @Success 200 {object} main.Message
func Name(c *gin.Context){
    name := c.Param("name")

    if name==""{
        return
    }
    var message Message

    message = Message{
        MessageInfo: fmt.Sprintf("hello %s" ,name),
    }
    c.JSON(http.StatusOK, message.Serializer())
}

这里最好把响应体统一成结构体的形式。即

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
type Message struct {
    MessageInfo string `json:"message"`
}

func (m *Message) Serializer()Message{
    return Message{
        MessageInfo: m.MessageInfo,
    }

}

第三步:目录下 执行命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
swag init

自动生成 docs 文件夹,内含 swagger.json 、swagger.json 、 docs.go

编译不通过,查看报错信息,修改注释。

第四步:导入生成的 docs 文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import (
    "github.com/swaggo/gin-swagger"
    "github.com/swaggo/gin-swagger/swaggerFiles"

    _ "./docs" // docs is generated by Swag CLI, you have to import it.
    "github.com/gin-gonic/gin"
    "net/http"
    "fmt"
)

即这个 ./docs

第五步:go run main.go

访问:http://127.0.0.1:8080/docs/index.html

即可查看 swagger 文档。


全文完,谢谢,我是谢伟,再会。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.07.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
​工作中后端是如何将API提供出去的?swaggo很不错
咱们上一次简单分享了 GO 权限管理之 Casbin ,他一般指根据系统设置的安全规则或者安全策略
阿兵云原生
2023/02/16
5520
gin框架之用swagger自动生成API文档
我们在工作当中经常需要用到接口文档,那么怎么写接口文档呢?又会遇到哪些坑呢?刚开始的时候,我们用word写文档,后来我们用markdown写文档。但是这些方式不利于维护,到后来我们发现,接口改了,文档还是原来的样子,不利于维护。而且每次我们都需要用postman工具进行接口开发测试,及其繁琐麻烦。我在无意当中发现了swagger,从此喜爱上用swagger写文档。他不接可以自动生成文档,而且可以直接用来做接口测试。
大话swift
2020/03/13
2.4K0
swagger (GO) API文档工具入门
swaggo swagger 安装 swag 命令 go get -u github.com/swaggo/swag/cmd/swag 编写注释 服务基础信息 // @title swagger使用例子 // @version 1.0 // @description swagger 入门使用例子 func main(){ r := gin.Default() r.GET("/check", connectCheck) ... } api信息 type Response struct{
copy_left
2020/08/12
4K0
后端独立开发调试工具swagger
gin-swagger go get -u github.com/swaggo/swag/cmd/swag 下载swagger tool swag init -d .,…/controller 生成docs文件夹(main.go文件同目录执行,-d指定需要解析的所有路径,逗号隔开) 添加路由 import _ "model_path/docs" //导入生成的docs文件 import gs "github.com/swaggo/gin-swagger" import "github.com/sw
sofu456
2021/12/06
5960
Go每日一库之101:swagger
一份清晰明了的接口文档能够极大地提高前后端双方的沟通效率和开发效率。本文将介绍如何使用swagger生成接口文档。
luckpunk
2023/09/30
1.1K0
Go:构建应用程序的10大框架
现在,很多开源库都支持构建应用程序。我应该向你推荐一些库,它们可以帮助启动具有简单设计、干净代码和良好性能的项目。
Freedom123
2024/03/29
3210
Go:构建应用程序的10大框架
如何构建交互式的RESTful API文档
相信后端开发同学都写过API文档,如果你只开发API接口而不写文档会估计会被喷,而且写文档确实是个好习惯。但是写文档这个事确实挺痛苦的,之前我的做法是在内部开发人员内部约定一个markdown模板来填写,类似api.md这种格式,每个接口都会有多个字段(URL,Method,Params)来说明。
xiaojunzhou
2019/05/27
1.6K0
Hertz 整合swagger
因为从 Go 1.17 开始,在 go mod 模式下通过 go get 下载对应库文件将无法自动编译并安装到 $GOPATH/bin 的路径, 所以不再推荐用 go get 来安装可执行文件的方式。可以使用 go install来代替。
onenewcode
2024/02/05
2760
gin集成swagger构建api文档
这个时候你会发现在项目目录新建了一个docs目录,包含docs.go、swagger.json、swagger.yaml
孤烟
2020/09/27
1.1K0
swagger, swag, gin-swagger之间的关系
很多人不太理解 swagger, swag, gin-swagger 的关系,本文简单总结一下。
runzhliu
2022/04/13
5610
使用 Swagger 为 Go 项目生成 API 文档
Swagger 是一个基于 OpenAPI 规范设计的工具,用于为 RESTful API 生成交互式文档。本文将介绍如何在 Go 项目中集成 Swagger,特别是结合 Gin 框架生成 API 文档。
浩瀚星河
2025/03/23
5730
使用 Swagger 为 Go 项目生成 API 文档
Gin框架优雅关机和重启
我们编写的Web项目部署之后,经常会因为需要进行配置变更或功能迭代而重启服务,单纯的kill -9 pid的方式会强制关闭进程,这样就会导致服务端当前正在处理的请求失败,那有没有更优雅的方式来实现关机或重启呢?
玖柒的小窝
2021/10/06
1.4K0
用go-module作为包管理器搭建go的web服务器
本篇博客主要介绍了如何从零开始,使用Go Module作为依赖管理,基于Gin来一步一步搭建Go的Web服务器。并使用Endless来使服务器平滑重启,使用Swagger来自动生成Api文档。
SH的全栈笔记
2019/10/20
1.7K0
Gin 框架: 添加 Swagger UI
boot.yaml 文件会告诉 rk-boot 如何启动 Gin 服务,下面的例子中,我们指定了端口,Swagger UI 的 json 文件路径。
尹东勋
2021/10/26
1.8K0
Gin 框架: 添加 Swagger UI
GoFrame 框架: 添加 Swagger UI
我们介绍 rk-boot 库,用户可以快速搭建基于 GoFrame 框架的微服务。
尹东勋
2021/12/14
1.6K0
GoFrame 框架: 添加 Swagger UI
『No18: Go 实现世界杯后台管理系统』
趁着周末更新一期,上一期讲到 如何快速熟悉一个项目, 文章的最后讲到,最好的方法是借用相同的技术栈重新实现一个项目。
谢伟
2018/08/02
9740
『No18: Go 实现世界杯后台管理系统』
听说你还不会jwt和swagger-饭我都不吃了带着实践项目我就来了
哈喽,大家好,我是asong,这是我的第八篇原创文章。听说你们还不会jwt、swagger,所以我带来一个入门级别的小项目。实现用户登陆、修改密码的操作。使用GIN(后台回复Golang梦工厂:gin,可获取2020GIN中文文档)作为web框架,使用jwt进行身份校验,使用swagger生成接口文档。代码已上传个人github:https://github.com/asong2020/Golang_Dream/tree/master/Gin/gin_jwt_swagger。有需要的自行下载,配有详细使用文档。
Golang梦工厂
2022/07/07
8770
听说你还不会jwt和swagger-饭我都不吃了带着实践项目我就来了
Go语言WEB框架之Gin
文档:https://gin-gonic.com/zh-cn/docs/quickstart/
码客说
2022/10/05
1.4K0
Gin 生成 Swagger 接口文档
后台服务通过接口(如 RESTful API)对外提供服务时,需要有明确的接口文档。
恋喵大鲤鱼
2023/02/23
2.6K0
Gin 生成 Swagger 接口文档
gorilla/mux 框架 (rk-boot): 添加 Swagger UI
boot.yaml 文件会告诉 rk-boot 如何启动 gorilla/mux 服务,下面的例子中,我们指定了端口,Swagger UI 的 json 文件路径。
尹东勋
2022/02/08
8120
gorilla/mux 框架 (rk-boot): 添加 Swagger UI
相关推荐
​工作中后端是如何将API提供出去的?swaggo很不错
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验