2016-05-23 119 views
0

我已经开始使用Swagger。在这一点上,我收到了swagger 1.2版的swagger文件。然而,如果我想用这个文件生成一些东西,它只是给了我一堆看起来更像它的错误,只是忽略了我的swagger文件在版本1.2规范中的事实,并且继续前进,并根据版本2.0的版本进行验证规范。Swagger Codegen反向兼容性

一些给我的错误:

  • 缺少必要属性:路径
  • 附加属性不允许: 机型,原料药,resourcePath,swaggerVersion,apiVersion
  • ...

最后一个错误告诉我,apiVersion是未知,虽然gitHub页面声称最新的stable i s应该与版本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

但是,当你在扬鞭编辑器加载它,它给出了同样的错误: http://editor.swagger.io/#/

+0

请通过https://github.com/swagger-api/swagger-codegen/issues打开票据,并重现该问题。在使用swagger codegen生成客户端库或服务器存根之前,您还可以尝试https://github.com/lucybot/api-spec-converter将您的swagger规范从1.2转换为2.0。 –

+0

你好,我已经试过了,但我使用的规格是“缩小”的意思,调用相同的路径(虽然不同数量的参数)被删除,似乎只剩下一个了。我会为此做一张票:-) – Xabre

回答

2

swagger-codegen项目依托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版本的转换器中发现了一个“可重复”的错误,请在swagger-spec项目中提出问题,我们会看到修复它(大多数很容易) 。