实现注册功能时经常遇到参数校验的问题。
参数校验
- 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
-
参数前添加注解,并指定校验规则
-
控制器类添加注解
@RestController
@RequestMapping("/user")
@Validated
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/register")
public Result register(@Pattern(regexp = "^\\S{5,16}$") String username,@Pattern(regexp = "^\\S{5,16}$") String password) {
User u = userService.findByUserName(username);
if (u == null) {
userService.register(username, password);
return Result.success();
} else {
return Result.error("用户名已被占用");
}
}
}
参数校验失败异常处理
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public Result handleException(Exception e) {
// 输出错误信息到控制台
e.printStackTrace();
return Result.error(StringUtils.hasLength(e.getMessage()) ? e.getMessage() : "操作失败");
}
}