Swagger 3.0 中注解詳細示例

Swagger 3.0 提供了豐富的注解來詳細描述 API 的請求和響應。以下是一個使用 @Operation@Parameter@RequestBody@ApiResponse 注解的示例,展示了如何設置請求頭、請求參數、路徑變量、請求體和響應體。代碼中未使用 DTO 對象,而是使用 Map 來傳遞參數和響應。通過 @Parameter 注解,可以定義查詢參數、路徑變量和請求頭。@RequestBody 注解用于描述請求體的結構,而 @ApiResponse 注解則用于定義成功的響應內容。此示例展示了如何在 Swagger 中詳細描述 API 的各個部分,幫助開發者理解和使用 API。

為了演示如何詳細設置每個請求頭、請求參數、路徑變量、請求體、響應體,下面的代碼沒有使用 DTO 對象,參數和響應都使用的 Map。

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.StringToClassMapItem;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.*;import java.util.Map;@RestController
@RequestMapping("/api/swagger/example")
@Tag(name = "Swagger測試", description = "提供用戶的基本增刪查操作")
public class SwaggerExampleController {@PostMapping("/create/{tenantId}")@Operation(summary = "創建新用戶",description = "根據請求體中的參數創建一個新用戶,返回創建的用戶信息",parameters = {@Parameter(name = "type",description = "參數type",in = ParameterIn.QUERY,schema = @Schema(type = "string", example = "T001")),@Parameter(name = "tenantId",in = ParameterIn.PATH,schema = @Schema(type = "string", example = "tenant-001")),@Parameter(name = "Authorization",description = "認證令牌",required = true,in = ParameterIn.HEADER,schema = @Schema(type = "string", example = "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...")),@Parameter(name = "Request-Id",description = "請求追蹤ID",required = true,in = ParameterIn.HEADER,schema = @Schema(type = "string", example = "req-123456789"))},requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(required = true,description = "用戶信息,包括用戶名和郵箱",content = @Content(mediaType = "application/json",schema = @Schema(type = "object",requiredProperties = {"name", "email"},properties = {@StringToClassMapItem(key = "name",value = String.class),@StringToClassMapItem(key = "email",value = String.class)}))),responses = {@ApiResponse(responseCode = "200", description = "用戶創建成功",content = @Content(mediaType = "application/json",schema = @Schema(type = "object",properties = {@StringToClassMapItem(key = "id", value = Long.class),@StringToClassMapItem(key = "name", value = String.class),@StringToClassMapItem(key = "email", value = String.class),@StringToClassMapItem(key = "tenantId", value = String.class),@StringToClassMapItem(key = "authorization", value = String.class),@StringToClassMapItem(key = "requestId", value = String.class)})))})public Map<String, Object> create(@RequestParam("type") String type,@PathVariable("tenantId") String tenantId,@RequestHeader("Authorization") String authorization,@RequestHeader("Request-Id") String requestId,@RequestBody Map<String, Object> userMap) {userMap.put("type", type);userMap.put("id", 1001L); // 模擬生成的IDuserMap.put("tenantId", tenantId); // 添加租戶IDuserMap.put("authorization", authorization);userMap.put("requestId", requestId);return userMap;}}

(END)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/904776.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/904776.shtml
英文地址,請注明出處:http://en.pswp.cn/news/904776.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

切比雪夫不等式專題習題解析

切比雪夫不等式專題習題解析 前言 本文為概率論習題集專欄的切比雪夫不等式專題習題解析,針對習題篇中的10道題目提供詳細解答。希望通過這些解析幫助大家深入理解切比雪夫不等式的應用和意義。 一、基礎概念題解析 習題1解析: 錯誤。切比雪夫不等式適用于任何具有有限方…

軟件測試的概念

需求的概念 開發模型 測試模型 1. 什么是需求 在多數軟件公司&#xff0c;會有兩部分需求&#xff0c;?部分是??需求&#xff0c;?部分是軟件需求。 1.1 ??需求 ??需求&#xff1a;可以簡單理解為甲?提出的需求&#xff0c;如果沒有甲?&#xff0c;那么就是終端??…

前端面試每日三題 - Day 29

這是我為準備前端/全棧開發工程師面試整理的第29天每日三題練習&#xff1a; ? 題目1&#xff1a;Web Components技術全景解析 核心三要素 Custom Elements&#xff08;自定義元素&#xff09; class MyButton extends HTMLElement {constructor() {super();this.attachShado…

StreamRL:彈性、可擴展、異構的RLHF架構

StreamRL&#xff1a;彈性、可擴展、異構的RLHF架構 大語言模型&#xff08;LLMs&#xff09;的強化學習&#xff08;RL&#xff09;訓練正處于快速發展階段&#xff0c;但現有架構存在諸多問題。本文介紹的StreamRL框架為解決這些難題而來&#xff0c;它通過獨特設計提升了訓…

LVGL的核心:lv_timer_handler

文章目錄 &#x1f9e0; 一句話總結 LVGL 的運行核心&#xff1a;&#x1f501; 1. while(1) 主循環中的 lv_task_handler()?? 2. lv_timer_handler() 定時器調度核心? 并發控制? 關鍵行為流程&#xff1a;&#x1f300; 任務執行邏輯&#xff1a;&#x1f9ee; 計算下一次…

【數據機構】2. 線性表之“順序表”

- 第 96 篇 - Date: 2025 - 05 - 09 Author: 鄭龍浩/仟墨 【數據結構 2】 文章目錄 數據結構 - 2 -線性表之“順序表”1 基本概念2 順序表(一般為數組)① 基本介紹② 分類 (靜態與動態)③ 動態順序表的實現**test.c文件:****SeqList.h文件:****SeqList.c文件:** 數據結構 - 2 …

101 alpha——8 學習

alpha (-1 * rank(((sum(open, 5) * sum(returns, 5)) - delay((sum(open, 5) * sum(returns, 5)),這里我們操作符都明白&#xff0c;現在來看金融意義 金融意義 里層是這個 (sum(open, 5) * sum(returns, 5)) - delay((sum(open, 5) * sum(returns, 5)), 10 這里是兩個相減…

auto推導類型原則

auto 是 C11 引入的類型自動推導關鍵字&#xff0c;它允許編譯器根據表達式的類型來推導變量的確切類型。雖然使用 auto 可以讓代碼更簡潔&#xff0c;但理解它的類型推導規則非常關鍵&#xff0c;尤其是在涉及指針、引用、const、模板等場景時。 ? 一、基本推導原則 auto x …

使用智能表格做FMEDA

一、優點 使用智能表格替代excel做FMEDA具備以下優勢&#xff1a; 減少維護成本&#xff08;數據庫關聯&#xff0c;修改方便&#xff09;便于持續優化&#xff08;失效率分布&#xff0c;失效率模型可重復使用&#xff09;多人同步編寫&#xff08;同時操作&#xff0c;同步…

IP協議.

IP 協議是互聯網的核心協議&#xff0c;工作在網絡層。它給網絡中的設備分配唯一的 IP 地址&#xff0c;把上層數據封裝成數據包&#xff0c;然后根據目的 IP 地址通過路由器等設備進行轉發&#xff0c;實現數據在不同網絡間的傳輸。它還能在必要時對數據包進行分片和重組&…

archlinux 詳解系統層面

Arch Linux 深度解析&#xff1a;從設計哲學到系統架構 一、Arch Linux 概述&#xff1a;滾動發行的極客之選 Arch Linux 是一款以 滾動更新&#xff08;Rolling Release&#xff09; 為核心特性的 Linux 發行版&#xff0c;強調 輕量、靈活、高度可定制&#xff0c;旨在讓用…

HTML8:媒體元素

視頻和音頻 視頻元素 video 音頻 audio <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>媒體元素學習</title> </head> <body> <!--音頻和視頻 src:資源路徑 controls:控制條…

SpringBoot3集成Oauth2——1(/oauth2/token方法的升級踩坑)

備注&#xff1a;本文適用于你在SpringBoot2.7以前集成過oauth2&#xff0c;并且項目已經正式投入使用的情況&#xff0c;否則&#xff0c;我建議你直接學習或者找資料學習最新的oauth2集成&#xff0c;就不要糾結于老版本的oauth2。 原因&#xff1a;Spring Security 5.x和Sp…

筆記本電腦實現網線內網 + Wi-Fi外網同時使用的配置方案

1、同時連接兩個網絡? 插入網線連接內網&#xff0c;確保內網IP地址正常獲取&#xff08;如10.143.88.x&#xff09;&#xff1b;連接Wi-Fi接入外網&#xff0c;確認可正常訪問互聯網&#xff08;如網關為192.168.8.1&#xff09;。 2、 記錄關鍵網絡參數? 內網網關&#…

從韋斯利?卡普洛看北斗星咨詢公司的技術咨詢引領之路

在科技與商業深度交融的時代&#xff0c;技術咨詢公司扮演著舉足輕重的角色&#xff0c;它們宛如連接技術創新與企業實際需求的橋梁&#xff0c;助力企業在復雜多變的市場環境中找準技術發展方向&#xff0c;實現可持續增長。《對話 CTO&#xff0c;駕馭高科技浪潮》的第 5 章聚…

首版次軟件測試的內容有哪些?首版次軟件質量影響因素是什么?

首版次軟件測試不僅是簡單的“找錯”&#xff0c;更是系統地驗證和評估軟件各項功能和性能指標是否符合設計標準。 一、首版次軟件測試常見的測試內容   1.功能測試&#xff1a;對照需求文檔&#xff0c;確認功能模塊是否按預期實現&#xff0c;用戶操作流程是否順暢。   …

從零開始的python學習(六)P86+P87+P88

本文章記錄觀看B站python教程學習筆記和實踐感悟&#xff0c;視頻鏈接&#xff1a;【花了2萬多買的Python教程全套&#xff0c;現在分享給大家&#xff0c;入門到精通(Python全棧開發教程)】 https://www.bilibili.com/video/BV1wD4y1o7AS/?p6&share_sourcecopy_web&v…

從設計到開發,原型標注圖全流程標準化

一、原型標注圖是什么&#xff1f; 原型標注圖&#xff08;Annotated Prototype&#xff09;是設計原型&#xff08;Prototype&#xff09;的詳細說明書&#xff0c;通過圖文結合的方式&#xff0c;將設計稿中的視覺樣式、交互邏輯、適配規則等技術細節轉化為開發可理解的標準…

飛云分倉操盤副圖指標操作技術圖文分解

如上圖&#xff0c;副圖指標-飛云分倉操盤指標&#xff0c;指標三條線藍色“首峰線”&#xff0c;紅色“引力1”&#xff0c;青色“引力2”&#xff0c;多頭行情時“首峰線”和“引力1”之間顯示為紅色&#xff0c;“引力1”和“引力2”多頭是區間顏色顯示為紫色。 如上圖圖標信…

【LUT技術專題】ECLUT代碼解讀

目錄 原文概要 1. 訓練 2. 轉表 3. 測試 本文是對ECLUT技術的代碼解讀&#xff0c;原文解讀請看ECLUT。 原文概要 ECLUT通過EC模塊增大網絡感受野&#xff0c;提升超分效果&#xff0c;實現SRLUT的改進&#xff0c;主要是2個創新點&#xff1a; 提出了一個擴展卷積&…