swagger.yaml转换为swagger.json文件

方法一

swagger-editor页面

官方的 swagger-editor Live Demo (在线直接使用,就是访问的有点慢)或者将swagger-editor Download 下载到本地然后运行起来

  1. 在本地使用编辑器打开一个 swagger.yaml 或者swagger.json文件,全选(Ctrl + a键) swagger.yaml文件的内容之后复制(Ctrl + c), 粘贴(Ctrl + v)到 swagger-editor 左边的编辑区域(这只是我个人习惯的做法,当然可以使用编辑器引入文件的方式来导入文件的内容到swagger Editor中)
  2. 通过菜单"File" -> "Convert and save as JSON" 来下载 swagger.json 文件

方法二

使用 swagger提供的 swagger-codegen将swagger.yaml转换为swagger.json文件

  1. swagger-codegen-cli 包列表目录

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 目录中
posted @ 2019-07-28 15:44  五毛钱的饼  阅读(3721)  评论(0编辑  收藏  举报