学堂 学堂 学堂公众号手机端

在SpringBoot中,可以使用JSR303规范中的注解来实现请求参数的校验

lewis 2年前 (2023-10-08) 阅读数 5 #技术

在SpringBoot中,可以使用JSR303规范中的注解来实现请求参数的校验。具体步骤如下:

  1. 在Controller类中的请求方法参数前添加校验注解,比如@Validated和@NotBlank等。
@RestController @RequestMapping("/api") @Validated publicclassUserController{ @PostMapping("/user") publicResponseEntity<String>createUser(@Valid@RequestBodyUserDtouserDto){ //处理请求参数 returnResponseEntity.ok("Usercreatedsuccessfully"); } }
  • 创建一个DTO类,用来封装请求参数,并在DTO类的属性上添加校验注解。
  • publicclassUserDto{ @NotBlank(message="Nameismandatory") privateStringname; @Email(message="Emailshouldbevalid") privateStringemail; //getterandsetter }
  • 在Controller类中定义一个全局异常处理器,用来捕获校验失败的异常,并返回错误信息。
  • @ControllerAdvice publicclassGlobalExceptionHandler{ @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) @ResponseBody publicResponseEntity<String>handleValidationException(MethodArgumentNotValidExceptionex){ BindingResultresult=ex.getBindingResult(); List<String>errorMessages=result.getAllErrors().stream() .map(DefaultMessageSourceResolvable::getDefaultMessage) .collect(Collectors.toList()); returnResponseEntity.badRequest().body(String.join(",",errorMessages)); } }

    这样,当请求参数校验失败时,会返回相应的错误信息。SpringBoot会自动校验请求参数,并在校验失败时抛出MethodArgumentNotValidException异常,全局异常处理器会捕获该异常并返回错误信息。


    版权声明

    本文仅代表作者观点,不代表博信信息网立场。

    热门