项目中有个需求:前后端参数一致性校验,在某业务场景下后端代码需要校验参数个数,因此设计了1个工具类方便大伙使用,特此简单记录下。
校验参数个数工具类
一、校验工具类CheckNumInsideParamters
java
/**
* 校验参数字符串和列表个数
*
* @DATE 2024/6/6
**/
public class CheckNumInsideParamters {
/**
* 校验字符串列表参数个数
*
* @param parameters 参数
*/
public static void checkInsideList(List<?>... parameters) {
for (List<?> parameter : parameters) {
checkInsideListParameter(parameter, null, 0);
}
}
/**
* 校验字符串个数
*
* @param parameters 参数
*/
public static void checkInsideStr(String... parameters) {
for (String parameter : parameters) {
checkInsideListParameter(parameter, QueryParameterSizeConstant.SEMICOLON, 0);
}
}
/**
* 参数个数校验
* 如果是列表,则customLimit表示其长度
* 如果是字符串,则customLimit表示其通过分隔符strDelimiterr切分后的列表长度
* (如果strDelimiterr为空,则customLimit表示字符串长度)
*
* @param parameter 参数
* @param strDelimiterr 分隔符
* @param customLimit 自定义阈值长度
*/
public static void checkInsideListParameter(Object parameter, String strDelimiterr, int customLimit) {
int limit = customLimit > 0 ? customLimit : QueryParameterSizeConstant.DEFAULT_SIZE;
if (parameter instanceof List && ((List<?>) parameter).size() > limit) {
// 根据业务需要,这里抛出自定义异常
System.out.println("list exceed limit error");
} else if (parameter instanceof String) {
if (StringUtils.isNotBlank(strDelimiterr) &&
((String) parameter).split(strDelimiterr, limit + 1).length > limit) {
System.out.println("str exceed limit error");
} else if (((String) parameter).length() > limit) {
System.out.println("str exceed limit error");
}
}
}
}
二、单元测试ParameterSizeTest
java
/**
* 参数校验测试类
*
* @DATE 2024/6/6
**/
@SpringBootTest
public class ParameterSizeTest {
// 字符串参数个数校验
@Test
public void strTest() {
String str = "zhangsanfeng0;zhangsanfeng1;zhangsanfeng2;zhangsanfeng3;";
CheckNumInsideParamters.checkInsideStr(str);
}
// 列表参数个数校验
@Test
public void listTest() {
List<String> list = new ArrayList<>();
list.add("zhangsanfeng0");
list.add("zhangsanfeng1");
list.add("zhangsanfeng2");
list.add("zhangsanfeng3");
CheckNumInsideParamters.checkInsideList(list);
}
}
三、测试验证
1.字符串参数个数校验
2.列表参数个数校验
四、项目结构及源码
1.项目结构
2.源码下载
demo-springboot-mybatisplus
欢迎star!