课程名称:Spring Cloud 进阶 Alibaba 微服务体系自媒体实战
课程章节: 第3章 开发通行证有关服务
主讲老师: 风间影月
课程内容
在本节课程的学习过程当中,注册登录需要验证BO实体的信息。而在项目当中,使用到了JSR303注解接口校验。
对于一些封装的BO对象数据,可以通过一些注解进行校验,如下:PassportControllerApi.java。
启动校验的注解为:@Valid
@PostMapping("/doLogin") @ApiOperation(value = "一键注册登录接口", notes = "一键注册登录接口", httpMethod = "POST") public GraceJSONResult doLogin(HttpServletRequest request, HttpServletResponse response, @RequestBody @Valid RegisterLoginBO registerLoginBO, BindingResult result);
PassportController.java
public GraceJSONResult doLogin(HttpServletRequest request, HttpServletResponse response, RegisterLoginBO registerLoginBO, BindingResult result) { // 判断BindingResult是否保存错误的验证信息,如果有,则直接return if (result.hasErrors()) { Map<String, String> errorMap = getErrors(result); return GraceJSONResult.errorMap(errorMap); } // 获得前端传来的基本信息 String smsCode = registerLoginBO.getSmsCode(); String mobile = registerLoginBO.getMobile(); // 0. 校验验证码是否匹配 String redisSMSCode = redis.get(MOBILE_SMSCODE + mobile); if (StringUtils.isBlank(redisSMSCode) || !redisSMSCode.equalsIgnoreCase(smsCode)) { return GraceJSONResult.errorCustom(ResponseStatusEnum.SMS_CODE_ERROR); } return GraceJSONResult.ok(); }
验证的字段上方可以写一些相关的注解,系统识别后会自动检查RegisterLoginBO.java
public class RegisterLoginBO { @NotBlank(message = "手机号不能为空") private String mobile; @NotBlank(message = "短信验证码不能为空") private String smsCode; public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public String getSmsCode() { return smsCode; } public void setSmsCode(String smsCode) { this.smsCode = smsCode; } @Override public String toString() { return "RegisterLoginBO{" + "mobile='" + mobile + '\'' + ", smsCode='" + smsCode + '\'' + '}'; } }
如果校验有问题,那么可以直接获得并且放回给前端即可。
课程收获
JSR303校验
参数校验是我们程序开发中必不可少的过程。用户在前端页面上填写表单时,前端js程序会校验参数的合法性,当数据到了后端,为了防止恶意操作,保持程序的健壮性,后端同样需要对数据进行校验。后端参数校验最简单的做法是直接在业务方法里面进行判断,当判断成功之后再继续往下执行。但这样带给我们的是代码的耦合,冗余。当我们多个地方需要校验时,我们就需要在每一个地方调用校验程序,导致代码很冗余,且不美观。
导入依赖
创建SpringBoot项目时 会自动导入依赖在 spring-context-5.3.19.jar下面。
手动配置:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
创建配置类,并在类上加@Validated注解,然后在属性上加上JSR-303定义的校验注解。具体的校验规则参考下表:
课程截屏
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦