一、实验目的

实现后端接口参数自动校验,替代手动 if/else 判断,解决代码冗余、维护困难问题,实现统一异常提示与日志记录。

二、实验环境

  • 框架:若依(Ruoyi)SpringBoot 后端
  • 前端:Vue 管理页面
  • 模块:自定义学生信息管理模块(MyStudent)

三、实现步骤

1. 给实体类 MyStudent 添加校验注解

在字段上加入 JSR-303 校验注解,限制规则:

  • 姓名:非空,长度 ≤10
  • 性别:非空
  • 年龄:1~120
  • 手机号:符合 11 位手机号格式

关键代码:

java

运行

@NotBlank(message = "学生姓名不能为空")
@Size(max = 10, message = "学生姓名长度不能超过10个字符")
private String name;

@NotBlank(message = "性别不能为空")
private String sex;

@Min(value = 1, message = "年龄必须大于0")
@Max(value = 120, message = "年龄不能超过120岁")
private Long age;

@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
private String phone;

2. Controller 开启校验

在新增、修改接口的参数前添加 @Validated,触发自动校验:

java

运行

@PostMapping
public AjaxResult add(@Validated @RequestBody MyStudent myStudent)

@PutMapping
public AjaxResult edit(@Validated @RequestBody MyStudent myStudent)

3. 全局异常处理(若依自带)

使用 @RestControllerAdvice 统一捕获参数校验异常:

java

运行

@ExceptionHandler(MethodArgumentNotValidException.class)
public AjaxResult validExceptionHandler(MethodArgumentNotValidException e) {
    String msg = e.getBindingResult().getFieldError().getDefaultMessage();
    return AjaxResult.error(msg);
}

四、实验效果

1. 前端效果

输入不合法数据时,页面弹出提示:

  • 学生姓名长度不能超过 10 个字符
  • 年龄不能超过 120 岁
  • 手机号格式不正确

2. 后端控制台日志

控制台输出异常信息:

plaintext

ERROR c.r.f.w.e.GlobalExceptionHandler - Validation failed for argument
Field error in object 'myStudent' on field 'name'
default message [学生姓名长度不能超过10个字符]

实验代码截图


更多推荐