在使用`spring-boot-starter-validation`进行参数校验时,可以通过捕捉具体的参数异常并返回JSON格式的错误信息。下面是一个示例:\n\n1. 创建一个自定义的异常处理类,用来捕捉参数校验异常并返回JSON格式的错误信息。\n\njava\n@ControllerAdvice\npublic class CustomExceptionHandler extends ResponseEntityExceptionHandler {\n\n @Override\n protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex,\n HttpHeaders headers, HttpStatus status,\n WebRequest request) {\n Map<String, Object> body = new LinkedHashMap<>();\n body.put("timestamp", new Date());\n body.put("status", status.value());\n\n List<String> errors = ex.getBindingResult()\n .getFieldErrors()\n .stream()\n .map(x -> x.getDefaultMessage())\n .collect(Collectors.toList());\n\n body.put("errors", errors);\n\n return new ResponseEntity<>(body, headers, status);\n }\n}\n\n\n2. 在控制器中添加参数校验注解,如`@Valid`、`@NotNull`等。\n\njava\n@RestController\npublic class UserController {\n\n @PostMapping("/users")\n public User createUser(@RequestBody @Valid User user) {\n // 创建用户的逻辑\n }\n}\n\n\n在上述示例中,`handleMethodArgumentNotValid`方法会在参数校验失败时被调用,然后将错误信息封装成JSON格式并返回。\n\n注意:为了使`handleMethodArgumentNotValid`方法生效,需要将`@ControllerAdvice`注解添加到自定义的异常处理类上,并继承`ResponseEntityExceptionHandler`类。\n\n这样,当发生参数校验异常时,会返回类似以下格式的JSON错误信息:\n\njson\n{\n "timestamp": "2022-01-01T00:00:00.000+00:00",\n "status": 400,\n "errors": [\n "Field 'username' cannot be empty",\n "Field 'email' must be a valid email address"\n ]\n}\n\n\n其中,`timestamp`表示发生异常的时间,`status`表示HTTP响应状态码,`errors`表示具体的错误信息。

Spring Boot 参数校验异常处理:返回 JSON 格式错误信息

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

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