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

news2024/10/1 17:14:18

亲爱的学员朋友,前面咱一起实现了入参列表对比的部分功能,本节在此基础上继续开发和重构代码,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.coloradmin.cn/o/2182794.html

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

相关文章

算术操作符/和*、while、for循环

上一次我们讲到float等浮点型的数据范围和数据类型长度&#xff0c;以及sizeof可以查看变量、表达式、数据类型的字节数即所占内存。 除法/和乘法* 我们继续用计算器这个例子来学习其他语法。先来看最初我们写成的代码&#xff1a; #include<stdio.h> int Add(int a, …

基于YOLOv4和DeepSORT的车牌识别与跟踪系统

1. 项目简介 本项目旨在开发一个基于深度学习的自动车牌识别&#xff08;Automatic License Plate Recognition, ALPR&#xff09;系统&#xff0c;以实现对车辆牌照的实时检测、识别和追踪。自动车牌识别技术广泛应用于智慧交通、停车管理、电子收费和执法监控等领域&#xf…

Golang | Leetcode Golang题解之第440题字典序的第K小数字

题目&#xff1a; 题解&#xff1a; func getSteps(cur, n int) (steps int) {first, last : cur, curfor first < n {steps min(last, n) - first 1first * 10last last*10 9}return }func findKthNumber(n, k int) int {cur : 1k--for k > 0 {steps : getSteps(cu…

c++11新特性-下

c11的线程库可以跨平台使用。 原子性操作库(atomic) 不需要对原子类型变量进行加锁解锁操作&#xff0c;线程能够对原子类型变量互斥的访问。 atmoic<T> t; // 声明一个类型为T的原子类型变量t 在C11中&#xff0c;原子类 型只能从其模板参数中进行构造&#xff0c;不…

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

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

VMware虚拟机连接公网,和WindTerm

一、项目名称 vmware虚拟机连接公网和windterm 二、项目背景 需求1&#xff1a;windows物理机&#xff0c;安装了vmware虚拟机&#xff0c;需要访问公网资源&#xff0c;比如云服务商的yum仓库&#xff0c;国内镜像加速站的容器镜像&#xff0c;http/https资源。 需求2&#xf…

Hive数仓操作(八)

一、Hive中的分桶表 1. 分桶表的概念 分桶表是Hive中一种用于提升查询效率的表类型。分桶指的是根据指定列的哈希值将数据划分到不同的文件&#xff08;桶&#xff09;中。 2. 分桶表的原理 哈希分桶&#xff1a;根据分桶列计算哈希值&#xff0c;对哈希值取模&#xff0c;将…

【漏洞复现】JeecgBoot 积木报表 queryFieldBySql sql注入漏洞

》》》产品描述《《《 积木报表&#xff0c;是一款免费的企业级Web报表工具&#xff0c;像搭建积木一样在线设计报表!功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等! 》》》漏洞描述《《《 JeecgBoot 积木报表 queryFieldBySq| 接口存在一个 SQL 注入漏洞&…

Web和UE5像素流送、通信教程

一、web端配置 首先打开Github地址&#xff1a;https://github.com/EpicGamesExt/PixelStreamingInfrastructure 找到自己虚幻引擎对应版本的项目并下载下来&#xff0c;我这里用的是5.3。 打开项目找到PixelStreamingInfrastructure-master > Frontend > implementat…

NodeJS下载、安装及环境配置教程,内容详实

文章目录 概述关于本文NodeJS介绍 安装步骤 概述 关于本文 本文讲解如何在Windows系统中安装NodeJS并配置相关环境。 NodeJS介绍 Node.js&#xff08;通常简称为Node&#xff09;是一个开源、跨平台的JavaScript运行时环境&#xff0c;它允许开发者在服务器端运行JavaScrip…

【PyTorch】图像分割

图像分割是什么 Image Segmentation 将图像每一个像素分类 图像分割分类 超像素分割&#xff1a;少量超像素代替大量像素&#xff0c;常用于图像预处理语义分割&#xff1a;逐像素分类&#xff0c;无法区分个体实例分割&#xff1a;对个体目标进行分割全景分割&#xff1a;…

Simulink仿真中get_param函数用法

目录 语法 说明 示例 获取模块参数值和模型参数值 获取根参数名称和值 获取模型参数名称和值 获取模块列表和参数值 使用模块句柄获取模块参数值 显示模型中所有模块的模块类型 获取封装参数、Simulink 对象、模块图或注释的选项列表 获取封装参数的计算值 get_para…

如何用TorchAO优化PyTorch模型:看得见的性能提升

你有没有在训练PyTorch模型时,遇到过速度慢、内存占用高的问题?不管你是研究模型优化,还是追求性能极致的开发者,TorchAO可能正是你需要的工具。今天我们来聊聊这个PyTorch原生的架构优化工具,看看它是如何帮助你优化模型的,并且提升整体性能。 TorchAO是什么? Tor…

基于JAVA+SpringBoot+Vue的社区养老服务平台

基于JAVASpringBootVue的社区养老服务平台 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#x1f345; 哈…

脸爱云管理系统存在任意文件上传漏洞

漏洞描述 脸爱云一脸通智慧管理平台是一套功能强大、运行稳定、操作简单方便、用户界面美观的一脸通系统。该平台整合了人脸识别技术和智能化解决方案&#xff0c;可以实现识别和管理个体身份&#xff0c;为各种场景提供便捷的身份验证和管理功能。其存在任意文件上传漏洞&…

数值计算的程序设计问题举例

### 数值计算的程序设计问题 #### 1. 结构静力分析计算 **涉及领域**&#xff1a;工程力学、建筑工程 **主要问题**&#xff1a;线性代数方程组&#xff08;Linear Algebraic Equations&#xff09; **解释说明**&#xff1a; 在结构静力分析中&#xff0c;我们需要解决复杂的…

C++第五讲(2):STL--string--string的模拟实现+知识加餐

C第五讲&#xff08;2&#xff09;&#xff1a;STL--string--string的模拟实现知识加餐 1.string的模拟实现1.1string.h头文件 -- string类的声明1.2string.cpp源文件 -- string的具体实现1.3test.cpp源文件 -- string模拟实现的测试 2.知识补充1&#xff1a;swap3.知识补充2&a…

IDEA几大常用AI插件

文章目录 前言列表GPT中文版TalkXBito AIIDEA自带的AI 前言 最近AI、GPT特别火&#xff0c;IDEA里面又有一堆插件支持GPT&#xff0c;所以做个专题比较一下各个GPT插件 列表 先看idea的plugins里支持哪些&#xff0c;搜索“GPT”之后得到的&#xff0c;我用下来感觉第一第二和…

【Iceberg分析】调研Iceberg中表的原地演变

调研Iceberg中表的原地演变 文章目录 调研Iceberg中表的原地演变原生非分区表文件关系图表的原地演变之表schema演变新增字段new_column文件关系变化图为新增字段写入数据文件关系变化图删除新增字段文件关系变化图新增字段new_column2文件关系变化图删除数据文件关系变化图 原…

无人机之数据提取篇

一、无人机平台与传感器 无人机是进行数据采集的基础设施&#xff0c;其稳定性、可靠性、灵活性和负载能力直接影响到数据采集的效果。根据实际需求&#xff0c;需选择适合的无人机类型&#xff0c;如固定翼无人机适合大范围、长时间的数据采集&#xff0c;而多旋翼无人机则更适…