【问题标题】:OpenAPI vs swaggerOpenAPI vs 招摇
【发布时间】:2020-04-03 19:42:40
【问题描述】:
相比 swagger,使用 OpenApi 的实际优势是什么?
我是 openApi 技术的新手,只是想知道 openApi 中的功能比 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 现在非常详尽,可以支持多个用例,考虑一下可能是有意义的。