当前位置: 首页 > 知识库问答 >
问题:

Swagger Codegen反向兼容性

邵鸿福
2023-03-14

我已经开始使用Swagger。此时,我收到了一个swagger版本1.2的swagger文件。但是,如果我想用这个文件生成一些东西,它只会给我一堆看起来更像它的错误,只是忽略了我的swagger文件在1.2版规范中的事实,只是继续并根据规范的2.0版验证它。

我得到的一些错误:

  • 缺少所需属性:路径
  • 不允许附加属性:模型、apis、resourcePath、swaggerVersion、apiVersion
  • ...

最后一个错误告诉我apiVersion未知,尽管gitHub页面声称最新的稳定版应该兼容1.0、1.1、1.2和2.0版本。有没有一种方法可以让我“强迫”生成器考虑1.2规范而不是2.0规范?

我也用官方的1.2规范yaml文件进行了验证:https://raw.githubusercontent.com/swagger-api/swagger-codegen/v2.0.18/samples/yaml/pet.yml

但在Swagger编辑器中加载时,会出现相同的错误:http://editor.swagger.io/#/

共有1个答案

万俟丁雷
2023-03-14

swagger-codesen项目依赖于swagger-parser,它有一个名为swagger-compat-spec-parser的模块,它实际上会将您的1.2规范转换为2.0格式在传递给代码生成器之前。

您看到的错误是因为该转换失败。您可以在本地保存swagger 1.2文件,调整它们,然后重新运行处理。

从1.2到2.0的转换面临的挑战是,swagger 1.2最初没有一个模式来验证。因此,有很多无效的虚张声势,而且从技术上来说,将1.2规范中的所有不同问题转换到2.0中是不可能的。

也就是说,我们一直在努力改进工具,因此如果您在1.2转换器中发现“可重复”的错误,请在<code>swagger spec</code>项目中提交一个问题,我们将看到如何修复它(大多数都很容易)。

 类似资料:
  • ngrok承诺有关其接口的兼容性和稳定性,以便您可以自信地构建集成顶部,知道在升级到较新版本时期望的更改。 兼容性承诺 Point Release (2.0.0 -> 2.0.1) - ngrok承诺在点发布之间没有突破性的变化 Minor Version Change (2.0 -> 2.1) - ngrok可能会进行小的更改,打破兼容性的次要版本更改。 ngrok承诺,任何破坏性更改将由一个版

  • 确保您可以轻松顺利地升级您的应用程序,这对我们是很重要的。这就是为什么我们只在主 要版本里程碑才会打破兼容性。你可能熟悉 语义版本控制 ,这 就是我们在所有的 CakePHP 项目中使用的通用准则。总之,语义版本控制意味着只有主要版 本(比如2.0,3.0,4.0)可以打破向后兼容性。次要版本(比如2.1,3.1,3.2)可能会引入新 的功能,但不能破坏兼容性。错误修复版本(比如2.1.2,3.0

  • 我们的系统由多个微服务组成,这些微服务发出并使用以avro格式编码的事件(参见底部的模式)。一个特定的用例如下:服务A在主题T1上发出一个事件(类型为InvoiceEvents),服务B和C(不同的开发团队)在T1上消费。例如,服务B是税务团队的一部分,而服务C是产品履行团队的一部分。 我本以为以下是真的(但似乎不是真的): 通过添加新的联合类型(即为字段“payload”创建的InvoiceCr

  • 我有一个avro模式定义,比如- 上线后,我们增加了另一个领域- CusterType被定义为null, string。即使在向合流注册表注册架构时,我们也会收到错误-正在注册的架构与早期架构不兼容。 如果有什么原因,请告诉我们。我们通过显式地将customerType默认为null来解决这个问题, Union{null, string}CusterType=null; 但不知何故,我觉得这不是必

  • 我正在我的项目中尝试Java8,我被困在与我的构建过程相关的错误中。 我正在使用ANT脚本,在某个时刻,我正在使用一些javascript(嵌入到ANT中)来执行一些特定于构建的操作。导致错误的脚本部分如下所示: 该项目使用Java 7或Java 6构建得很好,但在使用Java 8时,它会给我带来一些错误。这些错误与JS引擎的升级有关。 特别是我得到了以下例外: javax。剧本ScriptExc

  • 4.4.12 该版本支持了Websocket帧压缩,修改了push方法的第三个参数为flags,如未设置strict_types,代码兼容性不受影响,否则会出现bool无法隐式转换为int的类型错误,此问题将在v4.4.13修复 4.4.1 注册的信号不再作为维持事件循环的条件,如程序只注册了信号而未进行其他工作将被视为空闲并随即退出 (此时可通过注册一个定时器防止进程退出) 4.4.0 和PHP