============= 后端_实体校验 ============= 前端提交表单,后端收到POST请求,包体中包含Json格式的表单数据。 前端提交表单数据中的某项内容可能不符合实体类的要求,需要校验。 1 为实体类属性添加校验规则注解 /src/main/java/com/weihome/barblog/entity/User.java: ... public class User implements Serializable { ... @NotBlank(message = "昵称不能为空") private String username; ... @NotBlank(message = "邮箱不能为空") @Email(message = "邮箱格式不正确") private String email; ... } 2 添加实体校验异常处理 /src/main/java/com/weihome/barblog/common/GlobalExcepitonHandler.java: ... public class GlobalExcepitonHandler { ... /** * 实体校验异常 */ @ResponseStatus(HttpStatus.BAD_REQUEST) // 400 @ExceptionHandler(value = MethodArgumentNotValidException.class) public Result handler(MethodArgumentNotValidException e) { log.error("实体校验异常", e); BindingResult bindingResult = e.getBindingResult(); ObjectError objectError = bindingResult.getAllErrors() .stream().findFirst().get(); return Result.error(objectError.getDefaultMessage()); } ... } 3 为控制器添加测试方法 /src/main/java/com/weihome/barblog/controller/UserController.java: ... @RequestMapping("/user") public class UserController { ... @PostMapping("/save") public Result save(@Validated @RequestBody User user) { return Result.ok(user); } ... } 4 运行测试 执行BarblogApplication.main()... Postman: POST localhost:8081/user/save Body raw/JSON { "username": "" } ---------------------------------- { "code": 400, "message": "昵称不能为空", "data": null } Postman: POST localhost:8081/user/save Body raw/JSON { "username": "rabbit", "email": "weiyang8779#163.com" } ---------------------------------- { "code": 400, "message": "邮箱格式不正确", "data": null } Postman: POST localhost:8081/user/save Body raw/JSON { "username": "rabbit", "email": "weiyang8779@163.com" } ---------------------------------- { "code": 200, "message": "操作成功", "data": { "id": null, "username": "rabbit", "avatar": null, "email": "weiyang8779@163.com", "password": null, "status": null, "created": null, "lastLogin": null } } 5 为另一个实体类属性添加校验规则注解 /src/main/java/com/weihome/barblog/entity/Blog.java: ... public class Blog implements Serializable { ... @NotBlank(message = "标题不能为空") private String title; ... @NotBlank(message = "摘要不能为空") private String description; ... @NotBlank(message = "内容不能为空") private String content; ... }