OpenAPI与Swagger的区别

9

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

我对OpenApi技术还很陌生,想知道在OpenApi中有哪些比Swagger更多的功能。在线文档对我并没有帮助,有人可以帮忙吗?


2
OpenAPI是一种规范。Swagger是由SmartBear开发的围绕OpenAPI规范构建的工具集的名称。有许多工具(不仅仅是Swagger)支持OpenAPI。 - Helen
2个回答

10

OpenApi实质上是swagger的进一步开发,因此版本号为3.0.0而不是1.0.0。

如果您阅读swagger博客,则会了解Swagger已移交给OpenAPI倡议组织,所有Swagger工具(例如editor.swagger.io)都支持openapi,且两者之间可以相互转换。

正如他们所写:

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

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

如果您没有受到特定版本的限制,我建议使用openapi,因为社区理论上更大,并且自swagger v. 2.0.0以来发生了很多变化,例如简化和易用性提高。

支持更多安全方案,增强参数类型基于它们是否在路径、查询、标头或cookie中。

此外,你可以更好地定义示例。我曾参与过一个项目,我们希望使用OpenAPI而不是Swagger,但很遗憾,API网关尚未支持它...

2

在OpenAPI 3.0推出之前,Swagger 2.0非常受欢迎,但是OpenAPI 3.0通过改进和字段的整合使得规范更加完善。目前有许多工具支持解析/验证新的规范。

除了以上回复中提到的内容外,我认为指定“服务器”的变化也很重要。

Swagger 2.0仅允许一个主机+基本路径组合,并且唯一的灵活性是http和https协议。这对于可能有多个子域名用于API主机的情况或者在SaaS世界中需要租户变量的情况下并不实用。

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

OpenAPI3.0为解决这个需求添加了多个服务器URL,同时还定义了占位符的变量定义。它在路径和操作级别上进一步定义了服务器。另一个变化是参数规范的多样性。Swagger2.0对类型(除了允许body模式之外,大多数都是基本类型)和cookie的支持有限。OpenAPI3.0甚至允许对参数进行架构设计,并将body分离到一个专用的requestBody字段中。现在,cookie成为了发送参数的附加in位置。简而言之,OpenAPI3.0已经非常详尽地支持了几种用例,考虑使用它可能是有意义的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接