2016-05-23 53 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項目中提出問題,我們會看到修復它(大多數很容易) 。