方法定义
@PostMapping("/register")
public Result register(String username, String password) {
这里定义了一个名为register
的公共方法,它接受两个参数:username
(用户名)和password
(密码)。该方法返回一个Result
类型的对象,这通常是一个自定义的响应对象,用于封装API的响应信息。
用户名验证
String validPattern_username = "^(?![0-9_])[a-zA-Z0-9_]{8,16}$";
Pattern pattern_username = Pattern.compile(validPattern_username);
Matcher matcher_username = pattern_username.matcher(username);
这三行代码定义了一个正则表达式validPattern_username
,用于验证用户名格式。该正则表达式要求用户名不能以数字或下划线开头,并且只能包含字母、数字和下划线,长度在8到16个字符之间。接着,使用Pattern.compile()
方法将正则表达式编译成Pattern
对象,然后用这个Pattern
对象创建一个Matcher
对象来匹配用户名。
定义正则表达式
String validPattern_username = "^(?![0-9_])[a-zA-Z0-9_]{8,16}$";
编译正则表达式
Pattern pattern_username = Pattern.compile(validPattern_username);
创建Matcher对象并匹配用户名
Matcher matcher_username = pattern_username.matcher(username);
进行匹配判断
if (!matcher_username.matches()) { return Result.fail(404, "用户名格式不正确"); }
用户名匹配判断
if (!matcher_username.matches()) {
return Result.fail(404, "用户名格式不正确");
}
如果用户名不匹配正则表达式定义的模式,方法会返回一个表示失败的Result
对象,状态码为404,并附带一条错误信息“用户名格式不正确”。
检查用户名是否存在
User FindUser = userService.findByUserName(username);
if (FindUser == null) {
这两行代码调用userService
的findByUserName
方法来查找是否存在具有给定用户名的用户。如果返回的用户对象FindUser
为null
,表示该用户名尚未被使用。
密码验证
String validPattern_password = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[a-zA-Z\\d]{8,}$";
Pattern pattern_password = Pattern.compile(validPattern_password);
Matcher matcher_password = pattern_password.matcher(password);
if (!matcher_password.matches()) {
return Result.fail(404, "密码格式不正确");
}
这部分代码与用户名验证类似,定义了一个用于验证密码格式的正则表达式,并检查密码是否匹配该模式。如果密码格式不正确,方法会返回一个表示失败的Result
对象。
注册新用户
userService.register(username, password); return Result.success("注册成功");
如果用户名不存在且密码格式正确,方法会调用userService
的register
方法来注册新用户,并返回一个表示成功的Result
对象。
用户名已存在的情况
} else { return Result.fail("用户已经存在"); }
如果用户名已存在,方法会返回一个表示失败的Result
对象,并附带一条错误信息“用户已经存在”。