背景:
????????因為項目需要升級JDK,涉及到swagger2升級至openapi3的情況。由于swagger 2和openapi 3的語法差距太大,需要對yaml進行升級。無奈單個yaml文件的內容太大,高至4萬多行,手動進行語法的轉換肯定是不可能了,swagger 3提供的在線編輯器當遇到文件過大時,頁面也會宕機。所以,我們需要借助工具來實現語法間的轉換,于是,我找到了swagger2openapi這個工具。
什么是 swagger2openapi?
? ? ? ? 官網對其介紹很簡單,一句話概括了:Convert Swagger 2.0 definitions into OpenApi 3.0.x。swagger2openapi 是一個開源工具,用javascript寫的,托管在GitHub 上,并通過 npm 發布。
安裝 swagger2openapi:
????????因為swagger2openapi 是一個 Node.js 工具,所以需要 Node.js 環境,如果沒有Node.js,則需要先安裝Node.js,這里就不介紹Node.js的安裝方式了,需要的自行百度。需要注意的是Node.js的版本問題,比如,我使用的swagger2openapi的版本是7.0.8,他需要Node 12的版本。接下來回到swagger2openapi的安裝部分:
命令行輸入以下命令,全局安裝的模式:
npm install -g swagger2openapi
驗證安裝是否成功:
swagger2openapi --version
如果輸出了版本信息,說明安裝成功了。
使用方法:
????????swagger2openapi 提供了多種使用方式,包括命令行、Node.js 模塊、Docker 和 VS Code 擴展。下面就介紹命令行的使用吧,其他的請參考官網。
命令行使用,基本語法:
swagger2openapi [options] <input-file> [--outfile <output-file>]
?舉個例子:
swagger2openapi swagger.yaml -o openapi.yaml –-patch
強烈建議加上--patch參數,它可以修復一些小的問題,比如,openapi要求某些參數必須有description,加上--patch參數,就可以在轉換的同時,自動幫你加上。
轉換完成之后就是驗證工作了,它轉換出來的可能并不是完美的,所以,需要根據編譯的結果進行修復。但是可以解決大部分的問題,已經提高了不少效率了。
另外,這個工具轉換速度很快,相當推薦!