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 ...

六、最佳实践

  1. 统一标签命名:如 @Tags users 用于所有用户相关接口。
  2. 详细描述参数:在 @Param 中明确参数是否必填(true/false)。
  3. 分离模型定义:将请求/响应模型放在独立的 models 包中,提升可维护性。
  4. 版本控制:在全局注解中指定 @BasePath /api/v1,便于区分 API 版本。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32 HAL库 OLED驱动实现

一、概述 1.1 OLED 显示屏简介 OLED(Organic Light - Emitting Diode)即有机发光二极管,与传统的 LCD 显示屏相比,OLED 具有自发光、视角广、响应速度快、对比度高、功耗低等优点。在嵌入式系统中,OLED 显示屏常被用…

Web开发-JavaEE应用动态接口代理原生反序列化危险Invoke重写方法利用链

知识点: 1、安全开发-JavaEE-动态代理&序列化&反序列化 2、安全开发-JavaEE-readObject&toString方法 一、演示案例-WEB开发-JavaEE-动态代理 动态代理 代理模式Java当中最常用的设计模式之一。其特征是代理类与委托类有同样的接口,代理类…

K8s是常用命令和解释

K8s高频命令 获取资源信息,如获取 Pod、Service、Deployment等资源状态信息 kubectl get创建资源如创建Pod、Service、Deployment等资源 kubectl create删除资源,如删除Pod、Service、Deployment等资源 kubectl delete 应用配置文件,如引用D…

【模态分解】EMD-经验模态分解

算法配置页面,也可以一键导出结果数据 报表自定义绘制 获取和下载【PHM学习软件PHM源码】的方式 获取方式:Docshttps://jcn362s9p4t8.feishu.cn/wiki/A0NXwPxY3ie1cGkOy08cru6vnvc

TDengine 语言连接器(Go)

简介 driver-go 是 TDengine 的官方 Go 语言连接器,实现了 Go 语言 database/sql 包的接口。Go 开发人员可以通过它开发存取 TDengine 集群数据的应用软件。 Go 版本兼容性 支持 Go 1.14 及以上版本。 支持的平台 原生连接支持的平台和 TDengine 客户端驱动支持…

链接世界:计算机网络的核心与前沿

计算机网络引言 在数字化时代,计算机网络已经成为我们日常生活和工作中不可或缺的基础设施。从简单的局域网(LAN)到全球互联网,计算机网络将数以亿计的设备连接在一起,推动了信息交换、资源共享以及全球化的进程。 什…

AI agents系列之全面介绍

随着大型语言模型(LLMs)的出现,人工智能(AI)取得了巨大的飞跃。这些强大的系统彻底改变了自然语言处理,但当它们与代理能力结合时,才真正释放出潜力——能够自主地推理、规划和行动。这就是LLM代理大显身手的地方,它们代表了我们与AI交互以及利用AI的方式的范式转变。 …

如何使用AI辅助开发CSS3 - 通义灵码功能全解析

一、引言 CSS3 作为最新的 CSS 标准,引入了众多新特性,如弹性布局、网格布局等,极大地丰富了网页样式的设计能力。然而,CSS3 的样式规则繁多,记忆所有规则对于开发者来说几乎是不可能的任务。在实际开发中&#xff0c…

复刻系列-星穹铁道 3.2 版本先行展示页

复刻星穹铁道 3.2 版本先行展示页 0. 视频 手搓~星穹铁道~展示页~~~ 1. 基本信息 作者: 啊是特嗷桃系列: 复刻系列官方的网站: 《崩坏:星穹铁道》3.2版本「走过安眠地的花丛」专题展示页现已上线复刻的网…

爬虫:IP代理

什么是代理 代理服务器 代理服务器的作用 就是用来转发请求和响应 在爬虫中为何需要使用代理? 有些时候,需要对网站服务器发起高频的请求,网站的服务器会检测到这样的异常现象,则会讲请求对应机器的ip地址加入黑名单&#xff…

协程的原生挂起与恢复机制

目录 🔍 一、从开发者视角看协程挂起与恢复 🧠 二、协程挂起和恢复的机制原理:核心关键词 ✅ suspend 函数 ≠ 普通函数 ✅ Continuation(协程的控制器) 🔧 三、编译器做了什么?&#xff0…

c++11--std::forwaord--完美转发

std::forword的作用 完美转发的核心目的是保持参数的原始类型(包括const/volatile限定符和左值/右值性质)不变地传递给其他函数。 为什么需要完美转发 在没有完美转发之前,我们面临以下问题: 模板参数传递中的值类别丢失 当参数…

Linux安装开源版MQTT Broker——EMQX服务器环境从零到一的详细搭建教程

零、EMQX各个版本的区别 EMQX各个版本的功能对比详情https://docs.emqx.com/zh/emqx/latest/getting-started/feature-comparison.html

计算机组成原理-存储器

1. 存储器的定义与作用 存储器是计算机系统中用于存储程序、数据和中间结果的硬件设备,是计算机五大核心部件之一。 核心功能: 提供数据的 临时或永久存储 能力。支持CPU按需快速存取指令和数据,是程序运行的物理基础。 2. 存储器的分类 …

单片机领域中哈希表

以下是单片机领域中哈希表的实际应用及编程实例: 1.哈希表在单片机中的实际应用场景 • 命令解析:在单片机通信中,经常需要解析接收到的命令。使用哈希表可以快速地将命令字符串映射到对应的处理函数,提高命令解析的效率。 • 数…

算法思想之位运算(一)

欢迎拜访:雾里看山-CSDN博客 本篇主题:算法思想之位运算(一) 发布时间:2025.4.12 隶属专栏:算法 目录 滑动窗口算法介绍六大基础位运算符常用模板总结 例题位1的个数题目链接题目描述算法思路代码实现 比特位计数题目链接题目描述…

封装Tcp Socket

封装Tcp Socket 0. 前言1. Socket.hpp2. 简单的使用介绍 0. 前言 本文中用到的Log.hpp在笔者的历史文章中都有涉及,这里就不再粘贴源码了,学习地址如下:https://blog.csdn.net/weixin_73870552/article/details/145434855?spm1001.2014.3001…

全星APQP软件:为用户提供高效、合规、便捷的研发管理体验

全星APQP软件:为用户提供高效、合规、便捷的研发管理体验 为什么选择全星APQP软件系统? 在汽车及高端制造行业,研发项目管理涉及APQP(先期产品质量策划)、FMEA(失效模式与影响分析)、CP&#x…

CTF--网站被黑

一、原题: (1)提示:网站被黑了 黑客会不会留下后门 (2)原网页: 二、步骤: 1.在终端扫描网址: 2.扫描后发现:shell.php 3.输入网址:http://117.…

入门到精通,C语言十大经典程序

以下是十个经典的C语言程序示例&#xff0c;这些程序涵盖了从基础到稍复杂的应用场景&#xff0c;适合初学者和有一定基础的开发者学习和参考。 1. Hello, World! 这是每个初学者学习编程时的第一个程序&#xff0c;用于验证开发环境是否正确配置。 #include <stdio.h>…