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.* 版本)的开箱即用支持,可在您的 Web 浏览器中提供 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.1 版本目前通过从生成的 3.0 版本转换提供。从表示角度来看,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 版本定义时应用。任何验证错误都将像 3.0 版本一样在 SwaggerParseResult 中提供。  

处理 OpenAPI 3.1 规范时,Swagger Parser 使用与 3.0 文档不同的逻辑来解析 (options.setResolve(true))。这种逻辑旨在更具一致性和可维护性。  

有关 Swagger Core 和 Swagger Parser OpenAPI 3.1 支持的完整详细信息,请查看 GitHub 维基。  

Swagger UI 和 Swagger Client  

OpenAPI 3.1 的渲染功能将很快作为我们的 Swagger UI 增强功能的一部分推出。简而言之,通过将 ApiDOMSwagger Client 集成,将实现在 Swagger UI 中处理和渲染 OpenAPI 3.1 定义/文档的能力。  

我们预计这将在 2023 年第一季度完成,届时渲染功能也将引入到我们的 Swagger Editor 工具中。  

OpenAPI 3.0 和 3.1 支持概述  

以下是当前 OAS 3.0 和 3.1 支持程度的概述。我们将很快提供更详细的字段级别分解。  

OAS   

ApiDOM  

Swagger Editor (下一版本)  

Swagger Core  

Swagger Parser  

OpenAPI Object  

Info Object  

Contact Object  

License Object  

Server Object  

Server Variable Object  

Component Object  

Paths Object  

Path Item Object  

Operation Object  

External Documentation Object  

Parameter Object  

Request Body Object  

Media Type Object  

Encoding Object  

Responses Object  

Response Object  

Callback Object  

Example Object  

Link Object  

Header Object  

Tag Object  

Reference Object  

Schema Object  

✓ (部分限制)  

✓ (部分限制)  

✓ (部分限制)  

✓ (部分限制)  

Discriminator Object  

XML Object  

Security Scheme Object  

OAuth Flows Object  

OAuth Flow Object  

Security Requirement Object  

Specification Extensions  

后续步骤  

我们致力于支持 API 社区,涵盖各种 API 规范和语言。  

在此过程中,我们将公布 Swagger 路线图,并提供一些最新创新的更新。此外,我们希望在项目中的规范支持方面保持透明,因此很快将公开相关参考信息。  

我们非常希望您能参与到 Swagger 的开源项目中。请随意查看我们的贡献指南。  

© . All rights reserved.