Swagger 推出对 OpenAPI 3.1 的支持
我们很高兴地宣布,Swagger 开源生态系统全面支持 OpenAPI 3.1。
总结;
🎉Swagger 现已支持 OpenAPI 3.1 的编辑和渲染。
Swagger 提供对 JSON Schema 2020-12 的渲染支持。
Swagger UI、Swagger Client、Swagger Editor (Next)、Swagger Parser、Swagger Core 和 ApiDOM 均已添加对 OpenAPI 3.1 的支持。
继 之前的更新 和新的 产品发布,增加了丰富的编辑和验证体验之后,Swagger UI 现已支持渲染 OpenAPI 3.1 文档,并广泛支持最新版本的 JSON Schema 规范(Draft 2020-12)。
这一里程碑与新的 Swagger Editor 对 AsyncAPI(2.* 版本)的开箱即用支持同步,这意味着 Swagger 为使用所有版本 OpenAPI 和 AsyncAPI 的开发团队带来了丰富的体验。
什么是 OpenAPI 3.1?
OpenAPI 3.1 是 OpenAPI 规范 (OAS) 的最新版本(截至本文撰写时)。OpenAPI 规范定义了 HTTP API 的标准、与语言无关的接口描述。它允许人类和计算机理解服务的功能,而无需访问源代码、额外文档或检查网络流量。
随着 OpenAPI 3.1 的发布,OAS 技术指导委员会 (TSC) 经过社区讨论,决定不再遵循语义化版本控制。这使得某些破坏性变更能够适应与 JSON Schema 2020-12 的对齐,并解决 OpenAPI 3.0 中的经验教训,从而实现次要版本升级。这些变更已在 发布说明 中详细说明。
OpenAPI 3.1 中包含了许多改进。对我们而言,最突出的新增/变更是:
Schema Object
现已完全符合 JSON Schema Draft 2020-12,原始类型也已更新为基于 JSON Schema Draft 2020-12。
Webhooks
已作为顶级字段引入 OpenAPI Object
,允许描述作为 API 一部分可用的带外注册 Webhooks。
Components
Object 现在允许定义 pathItems
,从而在 OpenAPI 文档中推广使用可重用的 Path Item Objects
。
Info Object
支持在原有 description
字段旁边添加一个 summary
字段。
License Object
新增了一个用于 SPDX 许可证代码的标识符字段。
- 有效 OpenAPI 文档的构成也发生了变化。规范现在要求顶级至少存在
paths
、components
或 webhooks
之一。以前的规范版本要求存在 paths
。现在,一个有效的 OpenAPI 文档可以只描述 webhooks,甚至只描述可重用组件。
有关变更的详细列表,请参阅 Mike Ralphson(OAS TSC 成员)的这篇文章。
Swagger 中的 OpenAPI 支持
以下是 OpenAPI 3.0 和 3.1 当前支持级别概述。我们很快将发布更详细的字段级别细分。
OAS
|
ApiDOM
|
Swagger Editor (下一代)
|
Swagger Core
|
Swagger Parser
|
Swagger UI
|
Swagger Client
|
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
|
|
|
|
|
|
|
后续计划
下一步的重点将是弥补 OpenAPI 3.1 支持中发现的任何空白。此外,还将与更广泛的社区合作,确保 OpenAPI 3.1 的最新 Swagger 功能能够落实和被采用。
我们致力于在广泛的 API 规范和语言领域支持 API 社区。为此,我们计划公开 Swagger 路线图,并提供有关我们最新创新的一些更新。为了在跨项目规范支持方面保持透明,我们将很快提供相关参考信息。
我们非常欢迎您参与 Swagger 的开源计划。随时查阅我们的贡献指南,并随时贡献您的力量。