swagger.yaml转换为swagger.json文件
方法一
官方的 swagger-editor Live Demo (在线直接使用,就是访问的有点慢)或者将swagger-editor Download 下载到本地然后运行起来
- 在本地使用编辑器打开一个
swagger.yaml
或者swagger.json
文件,全选(Ctrl + a键) swagger.yaml文件的内容之后复制(Ctrl + c), 粘贴(Ctrl + v)到 swagger-editor 左边的编辑区域(这只是我个人习惯的做法,当然可以使用编辑器引入文件的方式来导入文件的内容到swagger Editor中) - 通过菜单"File" -> "Convert and save as JSON" 来下载
swagger.json
文件
方法二
使用 swagger提供的 swagger-codegen
将swagger.yaml转换为swagger.json文件
swagger-codegen-cli 2.2.1版本运行生成命令会报,如果 operationId 没有定义为空,会提示
Exception: null
at io.swagger.codegen.DefaultGenerator.processOperation(DefaultGenerator.java:796)
使用 2.3.1版本,在path中的operationId为空,会自动生成operationId
如:
[main] WARN io.swagger.codegen.DefaultCodegen - Empty operationId found for path
: post /user/login. Renamed to auto-generated operationId: userLoginPost
最后生成 swagger.json文件,但是我windows 7 下生成的swagger.json 文件编码是GB2312,在 swagger-ui中显示的中文会乱码
windows下运行,需要加上set JAVA_OPTS=-Dfile.encoding=UTF-8
,ASP.NET Core 1.0
java -Dfile.encoding=utf-8 -jar swagger-codegen-cli-2.3.1.jar generate -i swagger.yaml -l swagger -o tests
我将 swagger-codegen-cli-2.3.1.jar 放入到 opt中:
java -jar /opt/swagger-codegen-cli-2.3.1.jar generate -i swagger.yaml -l swagger
Linux下生成的swagger.json文件编码(Encoding)是 UTF-8正常
在Jenkins中,因为我项目中的 swagger的yaml是分开的,所以需要借助其它工具进行合并 其它的yaml文件为一个大的 swagger.yaml,工具链接swagger-merger
目前只用到 jenkins 通过 Publish over ssh
插件进行自动部署,运行的案列:
# 来自Jenkins Publish over ssh command的内容
cd /var/www/html/testapi # 进入 testapi 目录中
/usr/src/node-v8.11.1-linux-x64/bin/swagger-merger -i ./yamlmerge/main.yaml -o ./yamlmerge/swagger.yaml # 合并yaml文件
java -jar /opt/swagger-codegen-cli-2.3.1.jar generate -i yamlmerge/swagger.yaml -l swagger -o public/api # 将swagger.yaml 转换为swagger.json 并输出(放)到 public/api 目录中