Swagger 對於 OpenAPI 3.0 和 OpenAPI 3.1 的支援

  2023 年 1 月 24 日

在 Swagger Editor 最新版本的近期推出之後,我們很高興宣布它包含對 OpenAPI 3.0 中編輯和渲染體驗的廣泛支援。 

Swagger 生態系統一直在忙於開發 OpenAPI 3.1 的支援。OpenAPI 3.1 是 OpenAPI 規格的最新版本。  

現在,新編輯器支援豐富的編輯體驗,涵蓋諸如特定語言的文件、更好的自動完成、驗證、語法醒目顯示、跳至參考和在 OpenAPI 3.0 和 3.1 中「尋找符號」等功能。OpenAPI 3.1 的渲染將很快成為Swagger UI 增強功能的一部分。 

最新版本同時也支援新編輯器對AsyncAPI(版本 2.*)的開箱即用支援,在您的網頁瀏覽器中提供跨 OpenAPI 和 AsyncAPI 的豐富編輯體驗。 

此外,以下是關於整個 Swagger OSS 專案套件中 OpenAPI 規格 (OAS) 3.1 支援的快速更新。 

Swagger Core 

Swagger Core 2.2.0 版本在表示、(反)序列化以及註釋和程式碼優先規格解析的部分支援方面引入了對 OpenAPI 3.1 / JSON Schema 2020/12 的支援。OAS 3.1 支援已添加到目前提供 OAS 3.0 支援的同一程式碼行中。  

Swagger Core 和 Parser 的主要分支,產生以下成品: 

  • io.swagger.core.v3:swagger-core:2.2.x 
  • io.swagger.parser.v3:swagger-parser:2.1.x 

截至撰寫本文時,程式碼優先 OAS 3.1 規格解析和註釋的支援正在進行中,目前透過從產生的 3.0 轉換來提供 3.1。從表示的角度來看,swagger-models 提供 OpenAPI 3.x 定義的 POJO 表示。 

Swagger Parser 

Swagger Parser(自然地)將 OpenAPI 規格剖析為 Swagger Core 的 swagger-models 模組提供的 OpenAPI 實例。自 2.1.0 版本以來,它支援使用與 OAS 3.0 相同的 API 來剖析和驗證 OpenAPI 3.1 規格。  

它透過檢查 OpenAPI 欄位的值來偵測版本: 

    SwaggerParseResult result = new 
    OpenAPIParser().readLocation("./path/to/openapi31.yaml", null, null);  
    OpenAPI = result.getOpenAPI();
    

傳回的 OpenAPI 實例將類似於 Swagger Core 反序列化所獲得的實例。 

由於 Swagger Parser 2.1.0 版,驗證也支援 OAS 3.1 規格規則,當透過 OpenAPI 欄位偵測到版本 3.1 定義時,將套用這些規則。任何驗證錯誤都將與 SwaggerParseResult 中 3.0 的錯誤一樣提供。 

在處理 OpenAPI 3.1 規格時,Swagger Parser 使用與 3.0 文件不同的邏輯來解析 (options.setResolve(true))。這種邏輯旨在更一致且更易於維護。 

有關 Swagger Core 和 Swagger Parser OpenAPI 3.1 支援的完整詳細資訊,請參閱 GitHub wiki。 

Swagger UI 和 Swagger Client 

OpenAPI 3.1 的渲染將很快成為我們Swagger UI 增強功能的一部分。簡而言之,在 Swagger UI 中處理和渲染 OpenAPI 3.1 定義/文件的能力將透過 ApiDOMSwagger Client 的整合來實現。 

我們預計將在 2023 年第一季完成此功能,這也將把渲染功能帶入我們的 Swagger Editor 工具中。 

OpenAPI 3.0 和 3.1 支援概述 

以下是目前對 OAS 3.0 和 3.1 的支援程度概述。我們將很快提供更詳細的欄位層級分解。 

OAS 

ApiDOM 

Swagger Editor (下一個) 

Swagger Core 

Swagger Parser 

OpenAPI 物件 

資訊物件 

聯絡物件 

授權物件 

伺服器物件 

伺服器變數物件 

元件物件 

路徑物件 

路徑項目物件 

操作物件 

外部文件物件 

參數物件 

請求主體物件 

媒體類型物件 

編碼物件 

回應物件 

回應物件 

回呼物件 

範例物件 

連結物件 

標頭物件 

標籤物件 

參考物件 

綱要物件 

✓(有些限制) 

✓(有些限制) 

✓(有些限制) 

✓(有些限制) 

辨別器物件 

XML 物件 

安全性綱要物件 

OAuth 流程物件 

OAuth 流程物件 

安全性需求物件 

規格擴充 

後續步驟 

我們致力於在 API 規格和語言的各個領域為 API 社群提供支援。  

在這樣做的同時,我們將開放 Swagger 路線圖,並提供有關最新創新的一些更新。此外,我們希望在我們的專案中保持規格支援的透明度,因此將很快提供參考資訊。 

我們希望您能參與我們在 Swagger 中的開源倡議。請隨時查看我們的貢獻指南。