参数变化_springboot-参数验证提示语言动态变化的实现

1 背景

服务端的接口经常要进行参数校验,传统的在方法里面校验的方式会产生很多冗余代码,因此可以使用一些工具来帮我们解决这个问题

例如 hibernate-validator

引入jar包

  • hibernate-validator.6.5.0.Final.jar
  • validation-api-1.0.0.GA.jar

使用如下

  • 在需要校验的参数对象上加上约束注解
  • 在controller 方法里面加上 @Valid ,使校验生效
@ApiModelpublic class UserCreateRequest { @ApiModelProperty(name = "手机验证码") @NotBlank private String code; @ApiModelProperty(name = "手机号") @NotBlank private String phone; private String username; @ApiModelProperty(name = "密码") @NotBlank private String password;}@ApiOperation(value = "检验")@PostMapping(value = "/check")public String create(@RequestBody @Valid UserCreateRequest request) { return null;}

2 去掉 BindingResult

经过上面的配置,如果请求的参数校验不通过,返回的信息是这样的,这些信息没有经过整理,对前端来说很难处理 因此我们要重新整理这 些校验不通过的提示信息

aac4a1e623bb0cada0b82de1b0689f2b.png

通用的有一种方式,就是方法里面加上 BindingResult 参数,校验结果会存放到这个参数里面, 然后拿到异常信息返回

@ApiOperation(value = "检验")@PostMapping(value = "/check")public String create(@RequestBody @Valid UserCreateRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()){ return bindingResult.getFieldError().getDefaultMessage(); } return null;}

尼玛这么写代码,得在每个校验的方法里面加上这个,很不爽,看我的。

异常处理机制要这么配置

@Componentpublic class CustomExceptionResolver implements HandlerExceptionResolver, Ordered {  private static final Log log = LogFactory.getLog(CustomExceptionResolver.class);  @Override public int getOrder() { return 0; }  // 这里将捕获到的异常做统一处理,不直接在接口返回异常的堆栈信息 @ResponseBody @Nullable @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, @Nullable Object handler, Exception ex) { log.error("捕获到异常 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值