开始
E:\学习中\Java架构师体系课:还原千万级项目从0到100全过程,技术&思维双提升-wjw\阶段一:单体电商项目架构,开发与上线(1~5周)\04.用户中心 ,订单\评价管理开发\第1章 用户中心-查询,编辑,验证用户信息
用户信息,前端包含了一些验证
在后端也应该有。
搜索我们已经包含进来的hibernate的一个验证的包
在pom.xml内,右键maven
会出现一张所有依赖的一张大图。之前在讲日志的时候看过。
开始验证
用户昵称不为空
如果发生错误了,提示信息
正则
把中间这一段复制出来
@Pattern(regexp = "^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\\d{8})$", message = "手机号格式不正确")
@ApiModelProperty(value="手机号", name="mobile", example="13999999999", required = false)
private String mobile;
邮箱
也可以直接使用Email注解
性别
性别只能是 0、1、2这三种类型,所以这里用了Min和Max这两种类型。
controller
参数上加上@Valid注解。这样就表示去这样这个BO对象,。
验证BO就,肯定会包含一些错误信息。所有的错误信息都放在BindingResult里面,
// 判断BindingResult 是否保存错误的验证信息,如果有,则直接return
if(result.hasErrors()) {
}
封装处理错误的方法,它是一个键值对。
private Map<String,String> getErrors(BindingResult result) {
Map<String,String> map=new HashMap<>();
List<FieldError> errorList = result.getFieldErrors();
for (FieldError error :
errorList) {
// 发生验证错误所对应的某一个属性
String errorField = error.getField();
// 验证错误的信息
String errorMsg = error.getDefaultMessage();
map.put(errorField,errorMsg);
}
return map;
}
如果发生错误,返回errorMap
// 判断BindingResult 是否保存错误的验证信息,如果有,则直接return
if(result.hasErrors()) {
Map<String,String> errorMap=getErrors(result);
return IMOOCJSONResult.errorMap(errorMap);
}
测试
重启服务
因为我们前端本身已经包含了验证,所以这里我们测试后端,使用postman来测试
body里面我们传的是一个空的对象
http://localhost:8088/userInfo/update?userId=21011270605KYX8H
如果发生错误,我们抛出的就是501
测试真实姓名,长度不能超12位
{
"nickname":"慕课网",
"realname":"超级无敌长在线教育网站-imooc"
}
手机号
{
"nickname":"慕课网",
"realname":"超级无敌长在线教育网站-imooc",
"mobile": "123456"
}
这里在后端就是一个map对象
邮箱
{
"nickname":"慕课网",
"realname":"超级无敌长在线教育网站-imooc",
"mobile": "123456",
"email": "abc"
}
性别
012都没有问题
数字的小数点问题
2.9通过了验证
如果前端传过来的是小数,这里会强制转换为小数类型
我们在这里把BO对象打印出来看看
重启后端服务 测试
访问请求
文档
提供了一份文档
这里包含了很多的注解
验证的controller
还需要加上BindingResult