我是靠谱客的博主 简单自行车,最近开发中收集的这篇文章主要介绍springboot统一验证,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我们后台使用spring 为我们提供好的统一校验的工具spring-boot-starter-validation对请求进行校验。

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

这里通过注解封装了几种常用的校验

  • @NotNull 不能为null
  • @NotEmpty 不能为null、空字符串、空集合
  • @NotBlank 不能为null、空字符串、纯空格的字符串
  • @Min 数字最小值不能小于x
  • @Max 数字最大值不能大于x
  • @Email 字符串为邮件格式
  • @Max 数字最大值不能大于x
  • @Size 字符串长度最小为x、集合长度最小为x
  • @Pattern 正则表达式

我们以SysUser为例,看看怎么使用

public class SysUser implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户ID
*
*/
@TableId
private Long userId;
/**
* 用户名
*/
@NotBlank(message="用户名不能为空")
@Size(min = 2,max = 20,message = "用户名长度要在2-20之间")
private String username;
/**
* 密码
*/
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
/**
* 邮箱
*/
@NotBlank(message="邮箱不能为空")
@Email(message="邮箱格式不正确")
private String email;
/**
* 手机号
*/
@Pattern(regexp="0?1[0-9]{10}",message = "请输入正确的手机号")
private String mobile;
/**
* 状态
0:禁用
1:正常
*/
private Integer status;
/**
* 用户所在店铺id
*/
private Long shopId;
/**
* 角色ID列表
*/
@TableField(exist=false)
private List<Long> roleIdList;
/**
* 创建时间
*/
private Date createTime;
}

我们在Controller层使用该bean,并使用@Valid注解,使校验的注解生效,如SysUserController

@RestController
@RequestMapping("/sys/user")
public class SysUserController {
/**
* 保存用户
*/
@SysLog("保存用户")
@PostMapping
@PreAuthorize("@pms.hasPermission('sys:user:save')")
public ResponseEntity<String> save(@Valid @RequestBody SysUser user){
String username = user.getUsername();
SysUser dbUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>()
.eq(SysUser::getUsername, username));
if (dbUser!=null) {
return ResponseEntity.badRequest().body("该用户已存在");
}
user.setShopId(SecurityUtils.getSysUser().getShopId());
user.setPassword(passwordEncoder.encode(user.getPassword()));
sysUserService.saveUserAndUserRole(user);
return ResponseEntity.ok().build();
}
}

并且在DefaultExceptionHandlerConfig 拦截由@Valid 触发的异常信息并返回:

@Controller
@RestControllerAdvice
public class DefaultExceptionHandlerConfig {
@ExceptionHandler(BindException.class)
public ResponseEntity<String> bindExceptionHandler(BindException e){
e.printStackTrace();
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getBindingResult().getFieldErrors().get(0).getDefaultMessage());
}
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<String> methodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e){
e.printStackTrace();
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getBindingResult().getFieldErrors().get(0).getDefaultMessage());
}
}

最后

以上就是简单自行车为你收集整理的springboot统一验证的全部内容,希望文章能够帮你解决springboot统一验证所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部