swagger 注释说明
一、接口注释核心字段
在 Go 的路由处理函数(Handler)上方添加注释,支持以下常用注解:
| 注解名称 | 用途说明 | 示例格式 |
|---|---|---|
@Summary | 接口简要描述 | @Summary 创建用户 |
@Description | 接口详细说明 | @Description 通过用户名和邮箱创建新用户 |
@Tags | 接口分组标签(用于在 Swagger UI 中分类) | @Tags users |
@Accept | 接口接受的请求格式(如 json, xml, form-data) | @Accept json |
@Produce | 接口返回的响应格式(如 json, xml) | @Produce json |
@Param | 定义请求参数(路径参数、查询参数、请求体等) | @Param id path int true "用户ID" |
@Success | 成功响应的状态码、数据结构及描述 | @Success 200 {object} User |
@Failure | 失败响应的状态码、数据结构及描述 | @Failure 404 {object} ErrorResponse |
@Router | 定义接口路由路径和 HTTP 方法 | @Router /users/{id} [get] |
@Security | 接口使用的安全策略(需先在全局定义 @securityDefinitions) | @Security ApiKeyAuth |
二、@Param 参数详解
语法格式
@Param 参数名 参数位置 数据类型 是否必填 "描述"
参数位置
path:URL 路径参数(如/users/{id})query:URL 查询参数(如/users?name=John)header:HTTP 头参数body:请求体(通常用于 POST/PUT)formData:表单数据(如文件上传)
数据类型
- 基本类型:
int,string,boolean等 - 模型对象:
{object} User(需在代码中定义User结构体)
示例
// 路径参数
// @Param id path int true "用户ID"// 查询参数
// @Param name query string false "用户名"// 请求体(JSON)
// @Param user body User true "用户信息"// 表单文件上传
// @Param file formData file true "上传文件"
三、完整接口注释示例
示例 1:GET 请求(带路径参数)
// GetUser 获取用户详情
// @Summary 通过用户ID获取详情
// @Description 根据ID查询用户信息
// @Tags users
// @Accept json
// @Produce json
// @Param id path int true "用户ID"
// @Success 200 {object} User
// @Failure 404 {object} ErrorResponse
// @Router /users/{id} [get]
func GetUser(c *gin.Context) { ... }
示例 2:POST 请求(带请求体)
// CreateUser 创建用户
// @Summary 创建新用户
// @Description 通过JSON数据创建用户
// @Tags users
// @Accept json
// @Produce json
// @Param user body User true "用户信息"
// @Success 201 {object} User
// @Failure 400 {object} ErrorResponse
// @Router /users [post]
func CreateUser(c *gin.Context) { ... }
示例 3:文件上传(表单)
// UploadFile 上传文件
// @Summary 上传文件
// @Description 通过表单上传文件
// @Tags files
// @Accept multipart/form-data
// @Produce json
// @Param file formData file true "上传文件"
// @Success 200 {object} SuccessResponse
// @Router /upload [post]
func UploadFile(c *gin.Context) { ... }
四、模型定义注释
在结构体(请求/响应模型)上添加注释,Swagger 会自动解析字段:
// User 用户信息模型
type User struct {// 用户ID(示例值:1)ID int `json:"id" example:"1"`// 用户名(示例值:John)Name string `json:"name" example:"John"`// 邮箱(示例值:john@example.com)Email string `json:"email" example:"john@example.com"`
}// ErrorResponse 错误响应模型
type ErrorResponse struct {// 错误码(示例值:404)Code int `json:"code" example:"404"`// 错误信息(示例值:"用户不存在")Message string `json:"message" example:"用户不存在"`
}
五、常见问题
1. 文档未生成或未更新
- 解决:确保运行
swag init -g main.go并重新编译代码。 - 检查:注释必须紧贴在路由处理函数上方,不能有空行。
2. 模型字段未显示
- 解决:确保结构体字段有
json标签,例如json:"id"。 - 示例值:使用
example:"1"标签为字段添加示例值。
3. 参数绑定失败
- 检查:
@Param注解中的参数位置(如path/query)与实际代码是否一致。 - 示例:代码中使用
c.Param("id")时,Swagger 注解应为@Param id path ...。
六、最佳实践
- 统一标签命名:如
@Tags users用于所有用户相关接口。 - 详细描述参数:在
@Param中明确参数是否必填(true/false)。 - 分离模型定义:将请求/响应模型放在独立的
models包中,提升可维护性。 - 版本控制:在全局注解中指定
@BasePath /api/v1,便于区分 API 版本。
相关文章:
swagger 注释说明
一、接口注释核心字段 在 Go 的路由处理函数(Handler)上方添加注释,支持以下常用注解: 注解名称用途说明示例格式Summary接口简要描述Summary 创建用户Description接口详细说明Description 通过用户名和邮箱创建新用户Tags接口分…...
CST1019.基于Spring Boot+Vue智能洗车管理系统
计算机/JAVA毕业设计 【CST1019.基于Spring BootVue智能洗车管理系统】 【项目介绍】 智能洗车管理系统,基于 Spring Boot Vue 实现,功能丰富、界面精美 【业务模块】 系统共有三类用户,分别是:管理员用户、普通用户、工人用户&…...
【前端网络请求】XHR封装,支持文件上传、进度监控、混合字段传输
网络请求介绍 XMLHttpRequest(XHR)是前端开发中用于发起网络请求的基础技术。虽然现代开发中常用fetch或axios,但掌握XHR的封装技巧仍能让你更灵活地应对复杂需求。本文将通过一个可复用、功能全面的XHR封装工具,教你实现以下功能: 📤 文件上传(单个/多个文件)📊 实…...
# Shell脚本参数设计规范(DeepSeek指导)
Shell脚本参数设计规范(DeepSeek指导) 文章目录 Shell脚本参数设计规范(DeepSeek指导)A 我问:Q DeepSeek回答:**命令行参数表示规范****标准化表示示例**情况1:必选选项参数值情况2:…...
学习SqlSugar的跨库查询基本用法
使用SqlSugar操作数据库通常都是单库操作,跨库查询的情况要么是单个系统数据不完整,需要其它系统的关联业务数据支撑,要么就是需要整合汇总多个系统的数据进行数据数据分析、处理、展示。遇到上述情况,可以要求另外的系统提供查询…...
HTTP:五.WEB服务器
web服务器 定义:实现提供资源或应答的提供者都可以谓之为服务器!web服务器工作内容 接受建立连接请求 接受请求 处理请求 访问报文中指定的资源 构建响应 发送响应 记录事务处理过程 Web应用开发用到的一般技术元素 静态元素:html, img,js,Css,SWF,MP4 动态元素:PHP,…...
5.3 GitHub订阅系统核心架构解密:高并发设计与SQLite优化实战
GitHub Sentinel 分析报告功能实现:订阅管理核心逻辑解析 关键词:GitHub API 订阅管理, SQLite 数据库设计, RESTful API 开发, 原子操作封装, 异常处理机制 1. 订阅管理功能架构设计 订阅管理模块采用分层架构设计,通过清晰的接口隔离实现高内聚低耦合: #mermaid-svg-bW…...
CSI-PVController-volumeWorker
volumeWorker() 与claim worker流程一样,从volumeQueue中取数据,也就是取出的都是PV,如果informer中有这个pv,就进入update流程。 定义workFunc:首先,定义了一个匿名函数workFunc,这个函数是实…...
0基础 | 硬件滤波 C、RC、LC、π型
一、滤波概念 (一)滤波定义 滤波是将信号中特定波段频率滤除的操作,是抑制和防止干扰的重要措施。通过滤波器实现对特定频率成分的筛选,确保目标信号的纯净度,提升系统稳定性。 (二)滤波器分…...
图论基础理论
在我看来,想要掌握图的基础应用,仅需要三步走。 什么是图(基本概念)、图的构造(打地基)、图的遍历方式(应用的基础) 只要能OK的掌握这三步、就算图论入门了!࿰…...
leaflet 之 获取中国某个行政区的经纬度边界(latLngBounds)
思路 在json文件中获取下面的四个点 组成东北,西南两组 { “southwest”: { “lat”: 35.950, “lng”: 120.000 },//西南方 “northeast”: { “lat”: 36.200, “lng”: 120.300 }//东北方 } 最西点经度(minLng) 最东点经度(maxLng&#x…...
企业级低代码平台的架构范式转型研究
在快速迭代的数字时代,低代码平台如同一股清流,悄然成为开发者们的新宠。 它利用直观易用的拖拽式界面和丰富的预制组件,将应用程序的开发过程简化到了前所未有的程度。通过封装复杂的编程逻辑和提供强大的集成能力,低代码平台让…...
怎么免费下载GLTF/GLB格式模型文件,还可以在线编辑修改
现在非常流行glb格式模型,和gltf格式文件,可是之类模型网站非常非常少 1,咱们先直接打开http://glbxz.com 官方glb下载网站 glbxz.com 2 可以搜索,自己想要的模型关键词 3,到自己想下载素材页面 4,…...
MyBatis 中 Mapper 传递参数的多种方法
# MyBatis Mapper 传递参数的多种方法及其优势 在使用 MyBatis 进行数据库操作时,Mapper 接口的参数传递是一个非常基础但又十分重要的部分。不同的参数传递方式适用于不同的场景,合理选择可以大大提高代码的可读性和维护性。本文将详细介绍几种常见的 …...
大模型到底是怎么产生的?一文揭秘大模型诞生全过程
前言 大模型到底是怎么产生的呢? 本文将从最基础的概念开始,逐步深入,用通俗易懂的语言为大家揭开大模型的神秘面纱。 大家好,我是大 F,深耕AI算法十余年,互联网大厂核心技术岗。 知行合一,不写水文,喜欢可关注,分享AI算法干货、技术心得。 【专栏介绍】: 欢迎关注《…...
2025年3月 Scratch图形化三级 真题解析 中国电子学会全国青少年软件编程等级考试
2025年3月Scratch图形化编程等级考试三级真题试卷 一、选择题 第 1 题 默认小猫角色,scratch运行程序后,下列说法正确的是?( ) A.小猫的颜色、位置在一直变化 B.小猫在舞台中的位置在一直变化,颜色…...
判断两个 IP 地址是否在同一子网 C
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> // 将点分十进制的 IP 地址转换为 32 位无符号整数 unsigned int ip_to_uint(const char *ip) { struct in_addr addr; if (inet_pton(AF_INET, ip, &am…...
DHCP中继
前言: DHCP Relay即DHCP中继,它是为解决DHCP服务器和DHCP客户端不在同一个广播域而提出的 DHCP中继 DHCP协议依赖广播通信(如客户端发送DHCP Discover报文),但广播报文无法跨越子网,因为: 路由…...
02 - spring security基于配置文件及内存的账号密码
spring security基于配置的账号密码 文档 00 - spring security框架使用01 - spring security自定义登录页面 yml文件中配置账号密码 spring:security:user:name: adminpassword: 123456yml文件中配置账号密码后,控制台将不再输出临时密码 基于内存的账号密码 …...
【贪心之摆动序列】
题目: 分析: 这里我们使用题目中给的第二个实例来进行分析 题目中要求我们序列当中有多少个摆动序列,摆动序列满足一上一下,一下一上,这样是摆动序列,并且要输出摆动序列的最长长度 通过上面的图我们可以…...
Spring Boot 中应用的设计模式
Spring Boot 中应用的设计模式详解 Spring Boot 作为 Spring 框架的扩展,广泛使用了多种经典设计模式。以下是主要设计模式及其在 Spring Boot 中的具体应用: 一、创建型模式 1. 工厂模式 (Factory Pattern) 应用场景: BeanFactory 和 Ap…...
0x25广度优先搜索+0x26广搜变形
1.一般bfs AcWing 172. 立体推箱子 #include<bits/stdc.h> using namespace std; int n,m; char s[505][505]; int vis[3][505][505]; int df[3][4]{{1,1, 2,2},{0,0,1,1}, {0,0,2,2}}; int dx[3][4]{{0,0,1,-2},{0,0,1,-1},{2,-1,0,0}}; int dy[3][4]{{1,-2,0,0},{2,…...
java面向对象02:回顾方法
回顾方法及加深 定义方法 修饰符 返回类型 break:跳出switch和return的区别 方法名 参数列表 package com.oop.demo01;//Demo01类 public class Demo01 {//main方法public static void main(String[] args) {}/*修饰符 返回值类型 方法名(...){//方法体return…...
数据结构day05
一 栈的应用(括号匹配) 各位同学大家好,在之前的小结中,我们学习了栈和队列这两种数据结构,那从这个小节开始,我们要学习几种栈和队列的典型应用。这个小节中,我们来看一下括号匹配问题…...
windows中搭建Ubuntu子系统
windows中搭建虚拟环境 1.配置2.windows中搭建Ubuntu子系统2.1windows配置2.1.1 确认启用私有化2.1.2 将wsl2设置为默认版本2.1.3 确认开启相关配置2.1.4重启windows以加载更改配置 2.2 搭建Ubuntu子系统2.2.1 下载Ubuntu2.2.2 迁移位置 3.Ubuntu子系统搭建docker环境3.1安装do…...
ImgTool_0.8.0:图片漂白去底处理优化工具
ImgTool_0.8.0 是一款专为Windows设计的免费、绿色便携式图片处理工具,支持 Windows 7/8/10/11 系统。其核心功能为漂白去底,可高效去除扫描件或手机拍摄图片中的泛黄、灰底及阴影,同时提供智能纠偏、透视校正等辅助功能࿰…...
BGP路由协议之对等体
IGP 可以通过组播报文发现直连链路上的邻居,而 BGP 是通过 TCP:179 来实现的。BGP 需要手工的方式去配置邻居。不需要直连,只要路由能通就可以建立邻居 IBGP 与 EBGP IBGP :(Internal BGP) :位于相同自治系统的 BGP 路由器之间的 BGP 邻接关…...
Python代码相关关系矩阵的三种展示热力图-条形图
本文将深入探讨三种常用的展示技巧:corr()函数、热力图和条形图。通过这些技术,可以更直观地理解数据中的关联性,为进一步的分析和决策提供有力支持。 一、corr()函数:基础相关性分析 1. corr()函数的基本用法 corr()函数是Pandas库中用于计算数据帧(DataFrame)中两两…...
esp32cam远程图传:AI Thinker ESP32-CAM -》 服务器公网 | 服务器 -》 电脑显示
用AI Thinker ESP32-CAM板子访问公网ip的5112端口并上传你的摄像头拍摄的图像视频数据,并写一段python程序打开弹窗接受图像实现超远程图像传输教程免费 1. 首先你要有一个公网ip也就是去买一台拥有公网的服务器电脑,我买的是腾讯云1年38元的服务器还可…...
CSI-PVController-claimWorker
claimWorker() claim worker中循环执行workFunc() claim worker从claimQueue中取数据,也就是取出的都是PVCworkFunc首先从队列中取出一个obj,然后拿name去informer缓存中尝试获取 如果在informer缓存。说明不是删除事件,执行updateClaim()函…...
