你是不是还在这样判断请求参数为空?
if (StringUtils.isNotBlank(payVo.getSubject())) {
return ReturnVO.error("请传入商品标题!");
}
可以改进一下了,SpringBoot支持注解式校验非空参数!
Bean
@NotBlank(message = "程序版本不能为空")
@ApiModelProperty(value="版本",name="apiVersion")
private String apiVersion;
其中@NotBlank 可以写为其他的注解
@null 验证对象是否为空
@notnull 验证对象是否为非空
@asserttrue 验证 boolean 对象是否为 true
@assertfalse 验证 boolean 对象是否为 false
@min 验证 number 和 string 对象是否大等于指定的值
@max 验证 number 和 string 对象是否小等于指定的值
@decimalmin 验证 number 和 string 对象是否大等于指定的值,小数存在精度
@decimalmax 验证 number 和 string 对象是否小等于指定的值,小数存在精度
@size 验证对象(array,collection,map,string)长度是否在给定的范围之内
@digits 验证 number 和 string 的构成是否合法
@past 验证 date 和 calendar 对象是否在当前时间之前
@future 验证 date 和 calendar 对象是否在当前时间之后
@pattern 验证 string 对象是否符合正则表达式的规则
@Email 验证邮箱
Controller
@ResponseBody
@ApiOperation("刷脸初始化")
@RequestMapping(value = "/initialize.np", method = RequestMethod.POST)
private ReturnVO initialize(@RequestBody @Valid AliSmilepayInitializeVO aliSmilepayInitializeVO) {
return ReturnVO.success(aliSmilePayService.initialize(aliSmilepayInitializeVO));
}
请求就可以自动校验参数了!不过是默认返回报错
如果需要自定义返回类型,需要加入全局异常处理配置,其中ReturnVO 是我们公司自己定义的返回实体类
package com.jws.config;
import com.jws.common.pojo.vo.ReturnVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.validation.BindException;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author liuyg
* @date 2022年08月11日 14:11
*/
@RestControllerAdvice
public class GlobalException {
private Logger log = LoggerFactory.getLogger(getClass());
/**
* @Author liuyg
* @Description 全局异常处理
* @Date 2022/8/11 15:46
* @Param e
* @Return com.jws.common.pojo.vo.ReturnVO
*/
@ResponseStatus(HttpStatus.OK)
@ExceptionHandler(Exception.class)
public ReturnVO ortherExceptionException(Exception e) {
//空指针异常
if (e instanceof NullPointerException){
return nullPointerException((NullPointerException) e);
}
//空参数异常
if (e instanceof BindException){
return bindException((BindException) e);
}
//空参数异常
if (e instanceof MethodArgumentNotValidException){
return methodArgumentNotValidException((MethodArgumentNotValidException) e);
}
// 所有参数异常信息
log.error("捕获到未知异常:",e);
return ReturnVO.error("程序出现未知异常,请联系管理员!");
}
/**
* @Author liuyg
* @Description 空参数异常
* @Date 2022/8/11 16:03
* @Param e
* @Return com.jws.common.pojo.vo.ReturnVO
*/
public ReturnVO methodArgumentNotValidException(MethodArgumentNotValidException e) {
BindingResult bindingResult = e.getBindingResult();
// 所有参数异常信息
List<ObjectError> allErrors = bindingResult.getAllErrors();
log.error("捕获到非空参数异常:",e);
List<String> defaultMsg = allErrors.stream().map(ObjectError::getDefaultMessage).collect(Collectors.toList());
return ReturnVO.parameterIsNull(defaultMsg);
}
/**
* @Author liuyg
* @Description 空参数异常
* @Date 2022/8/11 16:03
* @Param e
* @Return com.jws.common.pojo.vo.ReturnVO
*/
public ReturnVO bindException(BindException e) {
BindingResult bindingResult = e.getBindingResult();
// 所有参数异常信息
List<ObjectError> allErrors = bindingResult.getAllErrors();
log.error("捕获到非空参数异常:",e);
List<String> defaultMsg = allErrors.stream().map(ObjectError::getDefaultMessage).collect(Collectors.toList());
return ReturnVO.parameterIsNull(defaultMsg);
}
/**
* @Author liuyg
* @Description 空指针异常处理
* @Date 2022/8/11 15:47
* @Param e
* @Return com.jws.common.pojo.vo.ReturnVO
*/
private ReturnVO nullPointerException(NullPointerException e){
log.error("捕获到空指针异常:",e);
return ReturnVO.error("程序出现空指针异常,请联系管理员!");
}
}
加入配置后的返回结果
评论区