Swagger-diff Json对比工具
使用场景
- 用于swagger文档不同版本之间进行JSON字符串对比,可输出html文件,且可追溯到每个变动的接口
效果如下:
注意前端弹窗html时可能因为样式影响显示效果,故要么直接修改此html自带的css文件并打包到本地或者直接新增样式如:
<style>
.test .POST {
box-sizing: content-box !important;
}
.test {
text-align: left;
}
.test .article {
margin-top: 0px;
}
</style>
配置及使用
依赖
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>swagger-diff</artifactId>
<version>1.2.2</version>
</dependency>
示例:
后端业务数据准备
Regular regular1 = regularService.getOne(new QueryWrapper<Regular>().select().eq("project_id", project.getProjectId())
.eq("version", srcVersion));
Regular regular2 = regularService.getOne(new QueryWrapper<Regular>().select().eq("project_id", project.getProjectId())
.eq("version", targetVersion));
if (regular1 == null || regular2 == null) {
return Result.error(103, "版本数据可能为空,请联系管理员");
}
//参数为swagger解析后的两个JSON字符串
SwaggerDiff diff = SwaggerDiff.compareV2Raw(regular1.getRegularDetail(), regular2.getRegularDetail());
Date date = new Date(System.currentTimeMillis());
String compareTime = DateUtil.format(date, DateUtil.YCHAR_06);
//修改、删除、新增接口的数据都存放在各自的list
List<ChangedEndpoint> changeList = diff.getChangedEndpoints();
List<Endpoint> missList = diff.getMissingEndpoints();
List<Endpoint> newList = diff.getNewEndpoints();
为前端显示做数据准备
//设置title及样式
html = new HtmlRender("对比结果预览",
"http://deepoove.com/swagger-diff/stylesheets/demo.css")
.render(diff);
//转译后可能导致显示出错,具体问题具体对待
html = html.replace("\\\"", "\"");
list.add(html);
list.add(compareId);
前端安装node_modules
//cnpm更快
cnpm install swagger-diff