首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >swagger (GO) API文档工具入门

swagger (GO) API文档工具入门

作者头像
copy_left
发布于 2020-08-12 07:39:49
发布于 2020-08-12 07:39:49
4K00
代码可运行
举报
文章被收录于专栏:方球方球
运行总次数:0
代码可运行
  • swaggo
  • swagger
安装 swag 命令
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go get -u github.com/swaggo/swag/cmd/swag
编写注释
  • 服务基础信息
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// @title swagger使用例子
// @version 1.0
// @description swagger 入门使用例子
func main(){
    r := gin.Default()
    r.GET("/check", connectCheck)
    ...
}
  • api信息
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
type Response struct{
    Code uint32 `json:"code"`
    Message uint32 `json:"message"`
    Data interface{} `json:"data"`
}

type ResponseError struct{
    Code uint32 `json:"code"`
    Message uint32 `json:"message"`
}

// @summary 服务连接校验 --> 接口简介
// @Description 服务初始连接测试 --> 接口描述
// @Accept json   --> 接收类型
// @Produce json  --> 返回类型
// Success 200 {object} Response --> 成功后返回数据结构
// Failure 400 {object} ResponseError --> 失败后返回数据结构
// Failure 404 {object} ResponseError
// Failure 500 {object} ResponseError
// @Router /check [get] --> 路由地址及请求方法
func connectCheck(c *gin.Context){
    res := Response{ Code: 1001, Message: "OK", Data: "connect success !!!"}
    c.JSON(http.StatusOK, res)
}
生成文档
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 根目录执行
swag init
配置文档路由
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import (
     ...
     _ "go-server/docs"  // 这里需要引入本地已生成文档
     ginSwagger "github.com/swaggo/gin-swagger" 
     swaggerFiles "github.com/swaggo/files"
)


func main(){
    ...
    
    r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
    r.Run(":8080")
}
启动服务并访问
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go run main.go

// 当前文档路径: localhost:swagger/index.html 
API 注释定义
  • summary 简介 // @Summary 简介
  • accept 可使用的MIME类型 // @Accept json
  • produce 可生成的MIME类型,既响应返回类型 // @Produce json // @Produce png 可设置多条
  • param 参数 格式: [ 参数名称 参数类型 数据类型 是否必须 备注 限制属性 ] 空格分割 @Params userId query string true "用户id" minlength(3) maxlength(100) @Params status query integer false "状态:0 1" Enums(0, 1) defualt(0)
    • 参数可用类型 [param type]
      • query
      • path
      • header
      • body
      • formDate
    • 数据可用类型 [data type]
      • string(string)
      • integer(int, uint, uint32, uint64)
      • boolean(bool)
      • user defined struct
    • 可配置属性
      • defualt * 参数默认值
      • maximum number 最大值
      • mininum number 最小值
      • maxLength integer 最大长度
      • minLength integer 最小长度
      • enums [*] 枚举类型
      • format string
      • collectionFormat string query数组分割模式
  • security 安全性
  • success 成功响应 格式: [ 状态码 {数据类型} 数据类型 备注 ] @Success 200 {object} Response "返回空对象"
  • failure 失败响应 格式: [ 状态码 {数据类型} 数据类型 备注 ] @Failure 400 {object} ResponseError
  • header 请求头字段 格式: [ 状态码 {数据类型} 数据类型 备注 ] // @Header 200 {string} Token "qwerty"
  • router 路由路径 // @Router /user/{userId} [get]
  • x-name 扩展字段 type Account struct { ID string `json:"id" extensions:"x-nullable,x-abc=def"` // 扩展字段必须以"x-"开头 }
结构体描述
  • example 例子
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
type User struct{
  ID int `json:"id" example:"232323"`
  Name string `json:"name" example:"Coco" `
}
  • 限制属性 type User struct{ ID int `json:"id" minLength:"3" maxLength:"100"` }
  • swaggerignore 排除字段 type Account struct { ID string `json:"id"` Name string `json:"name"` Ignored int `swaggerignore:"true"` // 排除Ignored字段 }
  • 重命名 type Resp struct { Code int }//@name Response 必须放在结构体末尾
注意事项
  • 多字段定义时不能跨字段 // @Accept json // @Produce json // @param id query string false "用户id" default("") minlength(3) maxlength(100) // @Produce json 这里将报错
  • 修改定义后需要重新执行,生成命令并重启服务
  • 路由配置时,引入文档
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何使用go-swagger文档
在前后端分离的项目开发过程中,如果后端同学能够提供一份清晰明了的接口文档,那么就能极大地提高大家的沟通效率和开发效率。那如何维护接口文档,历来都是令人头痛的,感觉很浪费精力,而且后续接口文档的维护也十分耗费精力。在很多年以前,也流行用word等工具写接口文档,这里面的问题很多,如格式不统一、后端人员消费精力大、文档的时效性也无法保障。
BUG弄潮儿
2025/09/02
1360
如何使用go-swagger文档
使用 Swagger 为 Go 项目生成 API 文档
Swagger 是一个基于 OpenAPI 规范设计的工具,用于为 RESTful API 生成交互式文档。本文将介绍如何在 Go 项目中集成 Swagger,特别是结合 Gin 框架生成 API 文档。
浩瀚星河
2025/03/23
8110
使用 Swagger 为 Go 项目生成 API 文档
gin框架之用swagger自动生成API文档
我们在工作当中经常需要用到接口文档,那么怎么写接口文档呢?又会遇到哪些坑呢?刚开始的时候,我们用word写文档,后来我们用markdown写文档。但是这些方式不利于维护,到后来我们发现,接口改了,文档还是原来的样子,不利于维护。而且每次我们都需要用postman工具进行接口开发测试,及其繁琐麻烦。我在无意当中发现了swagger,从此喜爱上用swagger写文档。他不接可以自动生成文档,而且可以直接用来做接口测试。
大话swift
2020/03/13
2.4K0
如何构建交互式的RESTful API文档
相信后端开发同学都写过API文档,如果你只开发API接口而不写文档会估计会被喷,而且写文档确实是个好习惯。但是写文档这个事确实挺痛苦的,之前我的做法是在内部开发人员内部约定一个markdown模板来填写,类似api.md这种格式,每个接口都会有多个字段(URL,Method,Params)来说明。
xiaojunzhou
2019/05/27
1.7K0
Go每日一库之101:swagger
一份清晰明了的接口文档能够极大地提高前后端双方的沟通效率和开发效率。本文将介绍如何使用swagger生成接口文档。
luckpunk
2023/09/30
1.1K0
Gin 生成 Swagger 接口文档
后台服务通过接口(如 RESTful API)对外提供服务时,需要有明确的接口文档。
恋喵大鲤鱼
2023/02/23
2.7K0
Gin 生成 Swagger 接口文档
gin集成swagger构建api文档
这个时候你会发现在项目目录新建了一个docs目录,包含docs.go、swagger.json、swagger.yaml
孤烟
2020/09/27
1.1K0
Gin 框架: 添加 Swagger UI
boot.yaml 文件会告诉 rk-boot 如何启动 Gin 服务,下面的例子中,我们指定了端口,Swagger UI 的 json 文件路径。
尹东勋
2021/10/26
1.8K0
Gin 框架: 添加 Swagger UI
『No17: gin-swagger 构建自动化文档』
重要,前后端的交互一般流程是这样的,后端暴露出API后,交给前端,前端根据API的响应,编写前端页面,一定程度上API 是前后端的交互桥梁。
谢伟
2018/08/02
1.4K0
『No17: gin-swagger 构建自动化文档』
Hertz 整合swagger
因为从 Go 1.17 开始,在 go mod 模式下通过 go get 下载对应库文件将无法自动编译并安装到 $GOPATH/bin 的路径, 所以不再推荐用 go get 来安装可执行文件的方式。可以使用 go install来代替。
onenewcode
2024/02/05
3330
GoFrame 框架: 添加 Swagger UI
我们介绍 rk-boot 库,用户可以快速搭建基于 GoFrame 框架的微服务。
尹东勋
2021/12/14
1.6K0
GoFrame 框架: 添加 Swagger UI
听说你还不会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
9230
听说你还不会jwt和swagger-饭我都不吃了带着实践项目我就来了
Echo 框架: 添加 Swagger UI
boot.yaml 文件会告诉 rk-boot 如何启动 Echo 服务,下面的例子中,我们指定了端口,Swagger UI 的 json 文件路径。
尹东勋
2021/11/02
1.4K0
Echo 框架: 添加 Swagger UI
gorilla/mux 框架 (rk-boot): 添加 Swagger UI
boot.yaml 文件会告诉 rk-boot 如何启动 gorilla/mux 服务,下面的例子中,我们指定了端口,Swagger UI 的 json 文件路径。
尹东勋
2022/02/08
8390
gorilla/mux 框架 (rk-boot): 添加 Swagger UI
用go-module作为包管理器搭建go的web服务器
本篇博客主要介绍了如何从零开始,使用Go Module作为依赖管理,基于Gin来一步一步搭建Go的Web服务器。并使用Endless来使服务器平滑重启,使用Swagger来自动生成Api文档。
SH的全栈笔记
2019/10/20
1.7K0
Gin 框架:添加 HTTP 基本验证中间件
通过一个完整例子,在基于 Gin 框架的微服务中添加 HTTP 基本验证中间件。
尹东勋
2021/11/08
1.3K0
Gin 框架:添加 HTTP 基本验证中间件
bee generate docs
如果没有这个_ =,这里的语句将是:ExprStmt - 包含单独的表达式语句。 更多类型见:golang深入源代码系列之一:AST的遍历
天地一小儒
2022/12/28
4740
bee generate docs
Go语言错误码设计与管理实践
最近在做一个和前端、第三方平台(可以简单理解为公司别的部门或者客户软件)直接交互的服务,涉及到用户注册、登录、数据处理等模块。架构图大概如下:
xin猿意码
2023/10/18
1K0
Go语言错误码设计与管理实践
Go:构建应用程序的10大框架
现在,很多开源库都支持构建应用程序。我应该向你推荐一些库,它们可以帮助启动具有简单设计、干净代码和良好性能的项目。
Freedom123
2024/03/29
3840
Go:构建应用程序的10大框架
强大的序列化工具:Protocol Buffers
Protocol Buffers 为结构化数据的序列化向前兼容,向后兼容,提供了语言中立、平台无关、可扩展机制的途径。类似JSON,但比JSON更小、更快。
Yuyy
2022/09/21
2.4K0
相关推荐
如何使用go-swagger文档
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档