使用 "spring-boot-starter-validation" 可以方便地进行参数校验,同时可以捕捉异常并返回 JSON 格式的错误信息。\n\n首先,需要在 pom.xml 中添加 "spring-boot-starter-validation" 依赖:\n\nxml\n<dependency>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-starter-validation</artifactId>\n</dependency>\n\n\n然后,在需要进行参数校验的方法参数前添加 "@Valid" 注解,例如:\n\njava\n@PostMapping("/user")\npublic User createUser(@Valid @RequestBody User user) {\n // 处理创建用户的逻辑\n}\n\n\n在 User 类中,可以使用 JSR-303 的注解来定义参数校验规则,例如:\n\njava\npublic class User {\n\n @NotBlank(message = \"用户名不能为空\")\n private String username;\n\n @Size(min = 6, max = 20, message = \"密码长度必须在6到20之间\")\n private String password;\n\n // 省略 getter 和 setter 方法\n}\n\n\n当请求参数不满足校验规则时,会抛出 MethodArgumentNotValidException 异常。可以使用 "@ControllerAdvice" 和 "@ExceptionHandler" 来捕捉该异常,并返回 JSON 格式的错误信息。\n\njava\n@ControllerAdvice\npublic class GlobalExceptionHandler {\n\n @ExceptionHandler(MethodArgumentNotValidException.class)\n @ResponseBody\n public Map<String, Object> handleValidationException(MethodArgumentNotValidException e) {\n BindingResult bindingResult = e.getBindingResult();\n List<FieldError> fieldErrors = bindingResult.getFieldErrors();\n\n Map<String, Object> response = new HashMap<>();\n response.put("code", "400");\n response.put("message", "参数校验失败");\n\n List<String> errors = new ArrayList<>();\n for (FieldError fieldError : fieldErrors) {\n errors.add(fieldError.getDefaultMessage());\n }\n response.put("errors", errors);\n\n return response;\n }\n}\n\n\n以上代码中,使用 "@ControllerAdvice" 注解标记了一个全局的异常处理类。在 handleValidationException 方法中,使用 "@ExceptionHandler" 注解来捕捉 MethodArgumentNotValidException 异常,并使用 "@ResponseBody" 注解将返回值转换为 JSON 格式。\n\n方法中首先获取到校验结果 BindingResult,然后遍历所有的 FieldError,将错误信息添加到 errors 列表中。最后将错误信息封装到 response 中,并返回给前端。\n\n这样,在发生参数校验失败的情况下,就会返回 JSON 格式的错误信息,方便前端进行处理。

Spring Boot 参数校验:使用 Spring-boot-starter-validation 和 JSON 异常处理

原文地址: https://www.cveoy.top/t/topic/pTuM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录