带徒实训项目实战讲义分享:ApiFirst文档对比功能页面开发

亲爱的学员朋友,前面咱一起实现了入参列表对比的部分功能,本节在此基础上继续开发和重构代码,go!

文章目录

    • 已实现的功能
    • 实现API入参列表的增删对比
    • 合并参数列表
    • 杜绝内部变量暴露
    • 提取modifiedType枚举

已实现的功能

基于0.0.60.0.5两个版本比较入参列表的变化,用淡蓝色背景标出改动的请求接口,比较出参数名称、描述的变化,这里以修改路径参数为例;比较参数校验规则的变化,这里用绿色标注新增的校验项:
在这里插入图片描述
再对比0.0.70.0.6两个版本的变化,密码参数的非空校验message修改了,并删除了长度校验:
在这里插入图片描述
具体的变化反映在数据库,咱们对操作历史变更插入了一些记录:
在这里插入图片描述
这些大家伙儿都完成的很好!

实现API入参列表的增删对比

在版本0.0.4中咱们对问候api进行了入参列表的调整,删掉了查询参数,新增了两个路径参数,sql脚本如下:
在这里插入图片描述
通过单元测试调试,发现咱们的核心对比功能对比出了这种变化:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在,让我们调整thymeleafhtml模板来实现这种渲染。
按照现在的实现,应该把personName参数这一行置灰:
在这里插入图片描述
先在对比基类中新增一个方法来判断对比项是否被删除:
在这里插入图片描述
学员要注意,这里modifiedType可能为null,也就是对比项没变化,不能直接用== 来判断。
修改compare-result.html,增加删除trclass
在这里插入图片描述
看到页面的变化:
在这里插入图片描述
延用校验单元格中对删除校验项的样式:
在这里插入图片描述
看一看标记删除的效果:
在这里插入图片描述

合并参数列表

在进一步实现参数列表新增项渲染功能之前,咱们先合并下对比的参数列表变化的部分:
ApiItemDTO中新增合并入参列表的方法:
在这里插入图片描述
调整模板:
在这里插入图片描述
看到新增的参数列表显示出来了
在这里插入图片描述
对新增参数项进行颜色标注,和前面对删除项的做法一样,先写getter判断方法:
在这里插入图片描述
模板调整:
在这里插入图片描述

isXxx()方法的属性获取
在获取时直接访问xxx即可,这里贴出来的代码可以再精简。

样式调整:
在这里插入图片描述
测试时发现,页面没看到效果,review代码,发现参数列表对比实现中忘了比较新增项的状态,调整下ParamsCompareCommand
在这里插入图片描述
重启服务,看页面效果:
在这里插入图片描述

杜绝内部变量暴露

功能实现了,带学员朋友再优化下代码。首先是判断modifiedType类型的地方,直接提供isXxx()方法,按照代码设计原则,这就是把自己不该暴露出来的东西给别人看了。
CompareBaseDTO中使用这些方法:
在这里插入图片描述

按照这种调整,有的学员朋友写出这样的代码,也需要优化:
在这里插入图片描述
提供isXxx()方法来代替:
在这里插入图片描述
悟性好的学员朋友,自然想到进一步优化,除去重复代码,复用对比项基类中的isXxx()方法,这样重构后代码就变得漂亮很多了:
在这里插入图片描述
相应的,在sub-templates.html中调整:
在这里插入图片描述
同样的,compare-result.html中的调整:
在这里插入图片描述
同样,在review学员代码时,看到这样的写法:
在这里插入图片描述
这是对api按照path分组后根据变更的状态进行背景色标注的模板代码,请自行按照前面的做法进行重构。优化后的结果:
在这里插入图片描述

提取modifiedType枚举

在实现内部接口时,变量可枚举的值强烈推荐用枚举来维护,在review学员代码时发现这种写法:
在这里插入图片描述
建议新建一个枚举类来更好的维护:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1552293.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Dubbo(学习笔记)

单体的应用架构: war可以对外的独立启动 jar是默认的 写操作是非幂等性的,多次写操作,会导致数据库出现错误的数据的情况。 影响RPC框架的性能主要有两点:序列化,建立连接(通讯) 灰度发布&#…

山高水长:要离职该怎么做——之找到一份工作

一、前言 有关离职的最好方法本应是显而易见的,但是许多软件开发者把离职这件事情都搞砸了( 1、以错误的方式离职会给你的职业生涯带来灾难性的后果,并且可能会给你的声望带来永久性的损害,特别是当你住在一座小镇上的时候。 2、…

2024-09-04 深入JavaScript高级语法十五——浏览器原理-V8引擎-js执行原理

目录 1、浏览器的工作原理1.1、认识浏览器内核1.2、浏览器渲染过程 2、JS引擎2.1、认识 JavaScript 引擎2.2、浏览器内核和JS引擎的关系2.3、V8引擎的原理2.4、V8引擎的架构2.5、V8执行的细节 3、全局代码的执行过程3.1、初始化全局对象3.2、执行上下文栈(调用栈&am…

RSA算法模拟实验报告(后篇,非常感谢橘味小奶糖的反馈)

有朋友说代码运行不出来,因为我是平板上写的,没在电脑上运行过,这也算是我的疏忽吧,今天尝试了一下,刚开始运行出来是乱码,改了一些东西,还是运行出来了。 我用的devc。 首先是文字显示&#…

基于SpringBoot+Vue的留学信息推荐系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

应用中的错误处理概述

title: 应用中的错误处理概述 date: 2024/10/1 updated: 2024/10/1 author: cmdragon excerpt: 摘要:本文介绍了Nuxt中的错误处理机制,包括全局错误处理器和组件层级错误捕获,以及错误传递规则和生产环境下的处理方式 categories: 前端开发tags: 错误处理Nuxt应用全局处…

【含文档】基于Springboot+Vue的古风生活体验交流网站(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

基于JAVA+SpringBoot+Vue的校园商铺管理系统

基于JAVASpringBootVue的校园商铺管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈…

解析!文档扫描 SDK 中的高级图像处理技术

随着世界数字化,文档扫描已成为现代商业运营的关键,它使文档的存储、访问和管理更加便捷。然而,扫描图像的质量对于这些数字档案的有效性至关重要。高质量的扫描可确保文本清晰、数据准确捕获并且信息易于检索。 另一方面,质量差…

视频——教学篇——12——定一个涨粉小目标,如何从0-10万粉?

文章目录 1、粉丝即正义。什么是粉丝价值?粉丝价值粉丝活跃度商业价值 2、找到账号目标和定位3、涨粉的基础是更新频率4、优质少更与良品多更的策略5、有播放却不涨粉?如何提高播放转粉率? 1、粉丝即正义。什么是粉丝价值? 在了解…

关于计算机算法设计方法的思考

灵感来源——二分图匹配对的男女配对 那种实际情况的背景解决不是无意义的“理解配对” 相反的是我认为这反而是设计的根本。人思考问题,再考虑如何使用计算机来实现。人能思考的逻辑问题计算机一般都可以实现,重要的是如何把问题掰碎扔给计算机解决。…

C0008.Clion利用C++开发Qt界面,使用OpenCV时,配置OpenCV方法

安装OpenCV 配置环境 配置Clion中的CMakeLists.txt文件 # 设置OpenCV的安装路径 set(OpenCV_DIR "D:/OpenCv_Win/opencv/build/x64/vc16/lib"

ubuntu 24.04如何分配内存

24版与之前有一点不同,这里记录一下我的经历,希望有帮助 1.进入ubuntu直接试用,没有之前的安装向导(如图),在屏幕的左上角会找到安装Ubuntu 2.分配内存 24的手动分配内存,不需要分配系统内存&…

Cannon-es.js之removeConstraint破坏约束案例

本文目录 前言最终效果1、postStep2、前置准备2.1 代码2.2 效果 3、removeConstraint3.1 解除约束代码效果 4、完整代码 前言 在3D物理引擎的广阔天地中,cannon-es以其轻量级、高性能和易于集成的特点,成为了WebGL环境中物理模拟的首选工具。它不仅能够精…

【C++】指针是啥东西?看这篇博客就够了!

指针到底是啥东西?很多人都有这样的问题,今天我就为大家来解答 首先看一行代码: int a; 很显然,这行代码的用途是定义变量,那么再看一行代码 int *a; 这下懵了吧,你们以为这是一行错误的代码&#xff…

【规控+slam】探索建图方案及代码分享

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言背景建图描述SLAM定位+感知数据标记构建地图自动探索建图规划方法一:手动遥控探索建图算法步骤方法二:手动给定目标点探索建图算法原理方法三:f…

动态规划最低票价

前言&#xff1a;之前看到过这个题目归结到动态规划&#xff0c;当初还没什么思路&#xff0c;其实就是定义好dp [ i ] 为到第 i 个的最小费用就行&#xff0c;我们可以用upper_bound来优化我们的查找下标 题目地址 class Solution { public:int mincostTickets(vector<int&…

Minstrel自动生成结构化提示,让AI为AI写提示词的多代理提示生成框架

在人工智能快速发展的今天&#xff0c;如何有效利用大型语言模型&#xff08;LLMs&#xff09;成为了一个普遍关注的话题。这是9月份的一篇论文&#xff0c;提出了LangGPT结构化提示框架和Minstrel多代理提示生成系统&#xff0c;为非AI专家使用LLMs提供了强大支持。 对于非人…

SpringBoot框架下的社区医院信息系统开发

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理社区医院信息平台的相关信息成为必然。开发…

关于pip install -e .的一点理解

笔者在安装库时对教程里面的pip install -e .产生了一些疑惑&#xff0c;查资料解决如下 参考资料&#xff1a;【python pip特殊用法】pip install -v -e . 命令详解-CSDN博客 首先Sources Root就是根目录 笔者最开始将ultralytics以pip install -e .方式安装在了D盘ultraly…