OpenAPI 与招摇

OpenAPI vs swagger

与 swagger 相比,使用 OpenApi 的实际优势是什么?

我是 openApi 技术的新手,只是想知道 openApi 比 swagger 有更多的功能。在线文档对我没有帮助。谁能帮我。

OpenApi 本质上是 swagger 的进一步发展,因此版本 3.0.0 而不是 1.0.0

如果你看过 swagger blog Swagger 已移交给 OpenAPI Initiative,并且 editor.swagger.io 等所有 swagger 工具都支持 openapi,以及两者之间的转换。

如他们所写

OpenAPI = Specification
Swagger = Tools for implementing the specification

(swagger 也是规范前两次迭代的术语)

如果不受具体版本的限制,我推荐openapi,理论上社区更大,而且有happened a lot since swagger v. 2.0.0,如简单易用

支持更多的安全方案,根据您是在路径、查询、header 还是 cookie 中增强参数类型。

定义示例的方式也有所改进。我参与了一个项目,我们希望使用 openapi 而不是 swagger 来实现这个共鸣,不幸的是,API GW 还不支持它...

Swagger 2.0 在 OpenAPI3.0 出现之前非常流行,有很多改进,领域的整合。有许多工具支持 parsing/validating 等的新规范。 除了上面回复中已经提到的内容之外,我发现指定 'server' 的更改非常重要。

Swagger 2.0 只允许一种主机+基本路径组合,唯一的灵活性是 http 和 https 方案。如果您可能有多个子域用于 API 主机,或者在 SaaS 世界的情况下,您可能有租户变量,则它没有用。

"host": "petstore.swagger.io",
"basePath": "/v1",
"schemes": [
  "http",
  "https"
]

OpenAPI3.0 通过添加多个服务器 URL 以及 URL 中占位符的变量定义来满足此要求。 它在路径甚至操作级别定义服务器方面领先一步。

另一个是参数规范的多样性。 Swagger 2.0 对与类型有关的参数的支持有限(除了正文模式之外,大多数原语都被允许)并且不支持 cookie。 OpenAPI 3.0 甚至允许参数的模式并将正文分隔到专用的 requestBody 字段中。 cookie 是现在发送参数的额外 in 位置。

简而言之,OpenAPI 3.0 现在非常详尽地支持多个用例,考虑它可能有意义。