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.pswp.cn/bicheng/76783.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/76783.shtml
英文地址,請注明出處:http://en.pswp.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>…