前一篇:带徒实训项目实战讲义分享:ApiFirst文档对比功能页面开发2
上一节咱实现了导出文档中数据模型属性列表的粗略渲染,对于某个API应用校验分组的情况下展示也指出了优化的方向,本小节咱就一起来实现这个目标吧,go!
渲染校验分组
在ApiItemDTO
中加一个方法来判断是否要渲染这一栏,这里要考虑校验分组对比后产生变更的情况。
编写模板:
看到效果:
过滤分组
首先优化下校验抽取的接口:
回顾下跟校验相关的DTO
的类关系:
然后新加一个指定分组来获取合并后的校验项的接口方法:
调整下两个重载方法的实现:
关于工具类的使用
这里再次提醒学员,要善于使用工具,不要自己编写重复的代码,遇到不会写的代码要善于走捷径使用百度AI。
自己再写个
main
方法验证下,确保没问题:
实现过滤分组后的模板渲染
引入子模版时传入指定的分组:
在子模版中获取校验项时,调用接收分组的方法:
再来看效果,完美实现了!
校验项按照分组来对比代码fix
现在,咱们在数据库里加一条关于用户信息数据模型的realName
属性的非空校验变更,比如就改下消息文字:
重新初始化下数据库的schema
和插入数据。
重启服务,看页面,之前校验模板封装的对比功能生效:
但同时,咱们的暂存接口也被标色了,问题在于对比的核心功能实现并没有按api所应用的校验分组来抓取数据模型的校验项来对比。
我们可以定位到对比的核心代码:
这里的泛型T
实际是DtoPropertyDTO
类型,问题是怎么知道上层的api
所指定的分组呢,怎么传入呢?咱们可以在对比上下文中设置当前正在对比的两个api
项:
在被指定的api对比的命令对象的开始把两个对比的api
项设置到对比上下文对象中:
这样,获取校验项列表的地方调整为:
新增重载方法:
新增实现:
最后,问题被完美fix!修改的分组校验,只要原来的分组不受影响,对比就没有变化: