【问题标题】:OpenAPI vs swaggerOpenAPI vs 招摇
【发布时间】:2020-04-03 19:42:40
【问题描述】:

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

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

【问题讨论】:

  • OpenAPI 是一个specification。 Swagger 是 SmartBear 围绕 OpenAPI 规范构建的工具集的名称。有支持 OpenAPI 的 many tools(不仅仅是 Swagger)。

标签: spring-boot swagger openapi


【解决方案1】:

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

如果您阅读了swagger blog Swagger 已移交给 OpenAPI Initiative,并且所有像 editor.swagger.io 这样的 swagger 工具都支持 openapi,以及两者之间的转换。

他们写的时候

OpenAPI = 规范
Swagger = 实施规范的工具

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

如果你不受特定版本的限制,我会推荐openapi,因为社区理论上更大,并且有happened a lot since swagger v. 2.0.0,例如简化和易用性。

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

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

【讨论】:

    【解决方案2】:

    在 OpenAPI 3.0 出现之前,Swagger 2.0 非常流行,并带来了许多改进和领域的整合。有许多工具可以支持新的解析/验证规范等。 除了上述响应中已经提到的内容之外,我发现指定“服务器”的更改非常重要。

    Swagger 2.0 只允许一个主机+基本路径组合,唯一的灵活性是 http 和 https 方案。如果您可能有多个 API Host 子域,或者在 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 现在非常详尽,可以支持多个用例,考虑一下可能是有意义的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-29
      • 2018-07-20
      • 2015-01-09
      • 2020-02-24
      相关资源
      最近更新 更多