springdoc-openapi-ui的使用教程

<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-ui</artifactId><version>1.6.14</version>
</dependency>

springdoc-openapi-ui 是一個用于生成 OpenAPI 文檔的庫,它與 Swagger 的關系如下:

區別

  1. OpenAPI 規范

    • springdoc-openapi 是基于 OpenAPI 3.0 規范的實現,而 Swagger 2.0 是較早的版本。OpenAPI 3.0 提供了更豐富的功能和更好的支持。
  2. 集成方式

    • springdoc-openapi 提供了更簡單的集成方式,特別是在 Spring Boot 應用中。它可以自動掃描控制器和模型,并生成相應的 API 文檔。
  3. 功能

    • springdoc-openapi 支持 OpenAPI 3.0 的所有特性,包括更復雜的請求和響應模型、參數、請求體等。

方法、VO 和請求對象的配置

使用springdoc-openapi-ui時,配置方法和VO與swagger2有所不同,它基于JavaDoc注解和特定的OpenAPI注解。下面是針對springdoc-openapi-ui的完整配置方案:

1. VO類配置

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;import java.math.BigDecimal;
import java.time.LocalDateTime;@Data
@Schema(description = "招標數據明細響應對象")
public class TenderDetailVO {@Schema(description = "主鍵ID", example = "1001")private Long id;@Schema(description = "招標編號", example = "ZB2023001")private String tenderNo;@Schema(description = "項目名稱", example = "城市道路改造工程")private String projectName;@Schema(description = "招標單位", example = "市政建設有限公司")private String tenderUnit;@Schema(description = "招標方式", example = "公開招標")private String tenderMethod;@Schema(description = "招標金額(萬元)", example = "500.80")private BigDecimal tenderAmount;@Schema(description = "發布時間")private LocalDateTime publishTime;@Schema(description = "截止時間")private LocalDateTime deadline;@Schema(description = "項目狀態", example = "招標中")private String projectStatus;
}

2. 參數類(Param)配置

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;@Data
@Schema(description = "招標數據明細查詢參數")
public class TenderDetailParam {@Schema(description = "招標編號", example = "ZB2023001")private String tenderNo;@Schema(description = "項目名稱", example = "城市道路改造工程")private String projectName;@Schema(description = "招標單位", example = "市政建設有限公司")private String tenderUnit;@Schema(description = "頁碼", example = "1", required = true)private Integer pageNum;@Schema(description = "每頁條數", example = "10", required = true)private Integer pageSize;
}

3. 分頁響應類配置

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;import java.util.List;@Data
@Schema(description = "分頁查詢響應對象")
public class PageResultVO<T> {@Schema(description = "總記錄數", example = "100")private long total;@Schema(description = "總頁數", example = "10")private int pages;@Schema(description = "當前頁碼", example = "1")private int pageNum;@Schema(description = "每頁條數", example = "10")private int pageSize;@Schema(description = "數據列表")private List<T> list;
}

4. 接口方法配置

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
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.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/tender")
@Tag(name = "招標數據管理", description = "招標數據相關接口")
public class TenderController {private final TenderService tenderService;// 構造函數注入服務public TenderController(TenderService tenderService) {this.tenderService = tenderService;}@Operation(summary = "查詢寬表:獲取招標數據明細",description = "根據條件查詢招標數據明細,支持分頁",responses = {@ApiResponse(responseCode = "200", description = "查詢成功",content = @Content(schema = @Schema(implementation = PageResultVO.class))),@ApiResponse(responseCode = "400", description = "請求參數錯誤"),@ApiResponse(responseCode = "500", description = "服務器內部錯誤")})@PostMapping("/detail")public PageResultVO<TenderDetailVO> getTenderDetail(@Parameter(description = "查詢參數", required = true)@RequestBody TenderDetailParam param) {// 調用服務層方法獲取數據return tenderService.queryTenderDetail(param);}
}

關鍵配置說明:

  1. 核心注解變化

    • @Schema替代了swagger2的@ApiModelProperty
    • @Tag替代了@Api
    • @Operation替代了@ApiOperation
    • @Parameter替代了@ApiParam
    • @ApiResponse@Content組合替代了@ApiResponses
  2. VO配置要點

    • 使用@Schema注解描述類和字段信息
    • 通過example屬性設置示例值
    • required屬性標識是否為必填字段
  3. 接口方法配置

    • @Operation中可以直接定義響應信息
    • 通過@Content@Schema指定響應數據類型
    • @Parameter用于描述請求參數
  4. 分頁處理

    • 保持分頁響應對象的通用性
    • @ApiResponse中通過implementation指定具體的泛型實現

配置完成后,訪問springdoc的默認地址http://localhost:8080/swagger-ui.html即可查看生成的API文檔。這種配置方式更符合OpenAPI 3.0規范,并且能更好地與spring生態集成。

3. 請求對象配置

請求對象通常是用于接收客戶端請求的對象。在上面的示例中,Item 類就是請求對象。您可以使用 @RequestBody 注解將請求體映射到該對象。

訪問 API 文檔

在啟動應用程序后,您可以通過訪問 http://localhost:8080/swagger-ui.html 來查看生成的 Swagger UI,您將看到所有配置的 API 及其文檔。

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

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

相關文章

【硬件-筆試面試題】硬件/電子工程師,筆試面試題-3,(運放/三極管)

目錄 1、題目 2、解答 【硬件-筆試面試題】硬件/電子工程師&#xff0c;筆試面試題-3&#xff0c;&#xff08;運放/三極管&#xff09; 這是一道大疆的筆試題 1、題目 2、解答

SQL Server 數據類型的含義、特點及常見使用場景的詳細說明

數值類型 bigint 含義:用于存儲大范圍的整數,是 8 字節(64 位)有符號整數類型。 范圍:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 。 場景:適合存儲像訂單編號(可能很大)、系統中需要大范圍計數的標識等,比如大型系統中大量數據的主鍵自增列(數據量極…

WPF的一些基礎知識學習記錄

路由事件 路由事件(Routed Event)是WPF事件系統的核心&#xff0c;它允許事件在元素樹中傳播&#xff0c;而不僅僅局限于引發事件的對象。包含以下三類&#xff1a;類型方向觸發順序典型用途示例事件??直接事件(Direct Event)??不路由只在源元素觸發類似傳統.NET事件MouseE…

【補題】Codeforces Round 1000 (Div. 2) C. Remove Exactly Two

題意&#xff1a;給一個樹&#xff0c;可以從里面刪去兩個點&#xff0c;使連通塊數量最大 思路&#xff1a;題解&#xff1a;CF2063C Remove Exactly Two - 洛谷專欄 這道題很容易想到&#xff0c;直接刪去度最多的兩個點就行了&#xff0c;但是這并不對&#xff0c;因為相鄰…

基于php的校園招聘平臺

學生&#xff1a;注冊&#xff0c;登錄&#xff0c;個人中心&#xff0c;學生應聘管理&#xff0c;面試邀請管理企業&#xff1a;登錄&#xff0c;個人中心&#xff0c;招聘信息管理&#xff0c;學生應聘管理&#xff0c;面試邀請管理管理員&#xff1a;登錄&#xff0c;個人中…

在 Ubuntu 22.04 上運行 cAdvisor 時遇到 mountpoint for cpu not found 錯誤

通常是由于 cgroup v2 導致的兼容性問題。Ubuntu 22.04 默認使用 cgroup v2&#xff0c;而舊版本的 cAdvisor 可能不完全支持它。以下是解決方案&#xff1a;方法 1&#xff1a;啟用 cgroup v1&#xff08;推薦&#xff09;臨時切換回 cgroup v1&#xff08;cAdvisor 兼容性更好…

如何讓RAGFLow每次知識檢索都是返回知識庫中的所有文檔?

在使用raglfow過程中,有時候輸入的文本檢索為空,要么就是只返回幾條.如果想要看到所有知識庫里文本返回,就得需要去到源碼里修改這個參數minimum_should_match(路徑:rag/utils/es_conn.py),將其設置為0%,即可返回所有文本!!

「iOS」——KVO

源碼學習iOS底層學習&#xff1a;KVO 底層原理KVO注冊 KVO 監聽 實現 KVO 監聽 移除 KVO 監聽 處理變更通知 手動KVO(禁用KVO)關閉自動通知手動實現 setter 方法KVO 和線程如果 KVO 是多線程的**單線程的保證**如果沒有 prior 選項**prior 選項的作用**KVO 實現原理派生類重寫的…

Unreal5從入門到精通之使用 Python 編寫虛幻編輯器腳本

文章目錄 前言 如何運行Python 1.控制臺 2.藍圖調用python python 入門 變量 數據類型 運算符 條件判斷 循環 函數 模塊引用 類型轉換 類 類方法 繼承 構造函數 unreal API 創建材質 創建材質實例 獲取Content下選中資源 獲取關卡中選中Actors 放置Cube 編輯器進度條 展示對話框…

Django3 - Web前端開發基礎 HTML、CSS和JavaScript

網站開發可以分為前端開發和后端開發&#xff0c;前端開發是指網頁設計&#xff0c;我們在瀏覽器看到網站的圖片、文字、音樂視頻等內容排版都是由前端開發人員實現的&#xff1b;后端開發是為前端開發提供實際的數據內容和業務邏輯&#xff0c;比如提供文字內容、圖片和音樂視…

Nginx和Apache的區別

一。Nginx和Apache的優缺點和對比Nginx 優點Apache 優點性能與并發采用事件驅動模型&#xff0c;支持 10 萬 高并發連接&#xff0c;資源&#xff08;CPU / 內存&#xff09;占用極低生態成熟&#xff0c;內置模塊可直接處理動態內容&#xff0c;無需依賴第三方程序配置與部署…

前端實現可編輯腦圖的方案

前端實現可編輯腦圖的方案 實現可編輯腦圖(Mind Map)在前端有多種方案&#xff0c;以下是一些主流的技術方案&#xff1a; 1. 基于現有開源庫的方案 JavaScript 庫 MindElixir: 輕量級開源腦圖庫&#xff0c;支持節點增刪改、拖拽、導入導出等 GitHub: https://github.com/sssh…

7-大語言模型—指令理解:指令微調訓練+模型微調

目錄 1、指令微調的訓練過程 2、指令微調數據 2.1、“指令輸入” 2.2、“答案輸出” 3、指令微調數據的構建方法 3.1、手動構建&#xff1a;純人工 “出題 寫答案” 3.1.1、構建流程 3.1.1.1、定義任務類型 3.1.1.2、設計指令模板 3.1.1.3、人工標注響應 3.1.2、工…

服務器版本信息泄露-iis返回包暴露服務器版本信息

漏洞信息描述&#xff1a;服務器版本信息泄露 測試過程&#xff1a;訪問http://192.168.23.63&#xff0c;看返回包可以得知服務器版本信息 顯示暴露返回server版本信息 修復建議&#xff1a;限制返回包帶有服務器版本信息 如何隱藏IIS Web服務響應頭中的IIS Server版本信息…

rust嵌入式開發零基礎入門教程(二)

本教程的第二部分&#xff0c;我們將深入理解 Rust 語言的核心概念——所有權&#xff08;Ownership&#xff09;、借用&#xff08;Borrowing&#xff09;和生命周期&#xff08;Lifetimes&#xff09;。這些是 Rust 內存安全的基礎&#xff0c;也是初學者理解 Rust 最關鍵的部…

【黑產大數據】2025年上半年互聯網黑灰產趨勢年度總結

2025年上半年&#xff0c;互聯網黑灰產攻擊持續演化&#xff0c;呈現出更隱蔽、更智能、更產業化的趨勢。黑灰產從業人員數量繼續增長&#xff0c;攻擊資源、技術與作案場景全面升級。整體來看&#xff0c;2025年上半年黑灰產行業發生的幾大事件&#xff0c;也時刻印證了黑灰產…

低代碼/無代碼平臺如何重塑開發生態

低代碼/無代碼平臺通過降低技術門檻、提升開發效率、推動業務和IT深度融合重塑開發生態。 具體而言&#xff0c;低代碼/無代碼平臺極大降低了應用開發的技術門檻&#xff0c;使得非專業人員也能輕松構建業務應用。此外&#xff0c;它們通過可視化的開發模式&#xff0c;大幅提升…

ICA學習(2)

1.公式推導1.1兩個問題ICA算法會帶來2個不確定性&#xff1a;幅值不確定性和順序不確定性。1.2 推導觀測數據 x 是盲源 s 的線性混合&#xff1a;x As (1)此時&#xff0c;W矩陣是未知的&#xff0c;ICA算法的目的便是找到一個最優的矩陣W&#xff0c;實現對矩陣…

【愚公系列】《MIoT.VC》002-構建基本仿真工作站(布局一個基本工作站)

??【行業認證權威頭銜】 ? 華為云天團核心成員:特約編輯/云享專家/開發者專家/產品云測專家 ? 開發者社區全滿貫:CSDN博客&商業化雙料專家/阿里云簽約作者/騰訊云內容共創官/掘金&亞馬遜&51CTO頂級博主 ? 技術生態共建先鋒:橫跨鴻蒙、云計算、AI等前沿領域…

網絡協議相關

OSI七層模型包含物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層;TCP/IP四層模型將其簡化為網絡接口層、網絡層、傳輸層和應用層;映射關系:例如OSI的物理層和數據鏈路層對應TCP/IP的網絡接口層&#xff0c;主要處理MAC地址尋址和物理介質傳輸。協議模型對比兩者的…