项目中有个需求:前后端参数一致性校验,在某业务场景下后端代码需要校验参数个数,因此设计了1个工具类方便大伙使用,特此简单记录下。

校验参数个数工具类

  • 一、校验工具类CheckNumInsideParamters
  • 二、单元测试ParameterSizeTest
  • 三、测试验证
    • 1.字符串参数个数校验
    • 2.列表参数个数校验
  • 四、项目结构及源码
    • 1.项目结构
    • 2.源码下载

一、校验工具类CheckNumInsideParamters

/**
* 校验参数字符串和列表个数
*
* @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

/**
* 参数校验测试类
*
* @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)

四、项目结构及源码

1.项目结构

校验参数个数工具类插图(2)

2.源码下载

demo-springboot-mybatisplus
欢迎star

本站无任何商业行为
个人在线分享 » 校验参数个数工具类
E-->