【问题标题】:How to convert a swagger 1.1 spec to a swagger >= 1.2 spec如何将 swagger 1.1 规范转换为 swagger >= 1.2 规范
【发布时间】:2018-12-05 20:43:40
【问题描述】:

我正在尝试为 C#/asp.net 核心生成客户端代码,以使用具有 swagger 1.1 规范的服务。 (服务不在我的控制范围内)。不幸的是,大多数最新工具都需要 swagger 1.2 规范。大多数工具甚至需要 open-api 2.0。甚至大多数转换器都是从 1.2 开始的。有人知道从 1.1 升级到 1.2 的工具吗?

我什至会考虑手动重写,但我找不到 1.1 和 1.2 之间的任何变化

【问题讨论】:

    标签: swagger openapi


    【解决方案1】:

    首先,1.2也是一个很老的版本。考虑转换为 OpenAPI 2.0(目前大多数工具都在使用),甚至可能转换为 OpenAPI 3.0(最新版本)。

    Swagger 代码生成

    Swagger Codegen 可以从 1.x-3.0 规范生成客户端/服务器代码,也可以将 Swagger 1.x 转换为 OpenAPI 2.0 或 3.0。

    要使用 Codegen CLI v. 2.x 从 Swagger 1.x 规范生成 C# 客户端:

    java -jar swagger-codegen-cli-2.4.0.jar generate
         -i http://path/to/spec.json
         -l csharp
         -o ./csharp-client
    

    要将 Swagger 1.x 转换为 OpenAPI 2.0,Codegen CLI v. 2.x 使用 -l swagger 参数获取 JSON 或 -l swagger-yaml 获取 YAML。

    java -jar swagger-codegen-cli-2.4.0.jar generate
         -i http://path/to/spec.json
         -l swagger
         -o ./converted
    

    要转换为 OpenAPI 3.0,请使用 Codegen CLI v. 3.x-l openapi 参数来获取 JSON,或使用 -l openapi-yaml 来获取 YAML。

    java -jar swagger-codegen-cli-3.0.3.jar generate
         -i http://path/to/spec.json
         -l openapi
         -o ./converted
    

    API 转换器

    API Transformer 声称支持 Swagger 1.x -> 1.2 / 2.0 / 3.0 转换。

    【讨论】:

    • 对不起,我应该提到它。但我已经尝试过官方的 codegen,包括 3.0 和 2.0 分支。但它似乎不理解“responseClass”标签,因此它会生成一个所有返回类型均无效的客户端。 :/。 API Transformer 无法找到根 swagger 文件定义的所有资源,因为它在访问它们时无法发送所需的安全参数。上传也不起作用,因为我只能上传一个文件:/.
    • 这可能是 Codegen 解析器中的错误报告,请考虑在 github.com/swagger-api/swagger-codegen/issues 提交错误报告。我不知道有任何其他 1.x 转换器。
    猜你喜欢
    • 2021-02-09
    • 2014-11-06
    • 2016-06-29
    • 2018-10-19
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多