如何将 OpenAPI 2.0 转换为 OpenAPI 3.0?

Rum*_*nka 15 swagger openapi

是否有任何工具/库可以将 OpenAPI 2.0 定义转换为 OpenAPI 3.0,而不是每行一个?

Hel*_*len 55

Swagger 编辑器

将您的 OpenAPI 2.0 定义粘贴到https://editor.swagger.io并从菜单中选择编辑 > 转换为 OpenAPI 3

Swagger Editor 从 OpenAPI 2.0 到 OpenAPI 3.0 的转换

Swagger 转换器

将 OpenAPI 2.0 和 Swagger 1.x 定义转换为 OpenAPI 3.0。

https://converter.swagger.io/api/convert?url=OAS2_YAML_OR_JSON_URL
Run Code Online (Sandbox Code Playgroud)

这为您提供了 JSON。如果您需要 YAML,请发送带有Accept: application/yaml标头的请求:

curl "https://converter.swagger.io/api/convert?url=OAS2_YAML_OR_JSON_URL" -H "Accept: application/yaml" -o ./openapi.yaml
Run Code Online (Sandbox Code Playgroud)

API 文档:https : //converter.swagger.io

GitHub 存储库:https : //github.com/swagger-api/swagger-converter

Swagger Codegen 版本 3.x

还可以将 OpenAPI 2.0 和 Swagger 1.x 定义转换为 OpenAPI 3.0。Swagger Codegen 有一个 CLI 版本、Maven 插件Docker 图像

这是使用命令行版本的示例(您可以从Maven Central下载最新的 JAR )。将整个命令写在一行上。使用openapi-yaml得到YAML或openapi得到JSON。

java -jar swagger-codegen-cli-3.0.19.jar generate
     -l openapi-yaml
     -i https://petstore.swagger.io/v2/swagger.yaml
     -o OUT_DIR
Run Code Online (Sandbox Code Playgroud)

GitHub 存储库:https : //github.com/swagger-api/swagger-codegen

  • 这似乎不再是该菜单中的选项...... (6认同)
  • `openapi-generator-cli` 使用 `-g` 而不是此处显示的 `-l`。否则,似乎工作原理类似。 (3认同)
  • @meawoppl [这是一个错误](https://github.com/swagger-api/swagger-editor/issues/3055) (3认同)
  • 顺便说一句:它也可以通过“openapi-generator-cli”来实现:https://github.com/OpenAPITools/openapi-generator。 (2认同)
  • 请注意,Swagger Editor 还使用在线转换器。在执行此操作之前,它会显示一条消息:“Swagger Editor 的内容将发送到 https://converter.swagger.io/api/convert”。 (2认同)
  • @meawoppl 缺少“转换为 OpenAPI 3”命令的问题已在 Swagger Editor v. 4.2.9 中[修复](https://github.com/swagger-api/swagger-editor/pull/3083)。现在,该命令在 https://editor.swagger.io 上再次可见。 (2认同)