java request含嵌套_java Api请求参数嵌套类验证

Java Api设计中参数的校验是Api接口功能的重要组成部分;如何对嵌套实体类对校验呢?

比如:银行卡绑定功能Api,请求接口bingCard,请求实体UserRequest,UserReuest又嵌套了一个银行卡集合,绑定多张银行卡;

@PostMapping("/bind/card")

public String bindCard(@Valid @RequestBody UserRequest request){

、、、相应处理

}

public class UserRequest{

@NotNull(message = "用户名称不能为空")

private String userName;

@Valid

@NotNull(message = "集合不为空")

private List cards;

、、、get,set方法

}

public class Card {

@NotBlank(message = "银行卡不能为空")

private String bankCard;

、、、get,set方法

}

Java框架提供了@Valid注解,对我们的请求实体做了非空,长度,正则表达式等多种判断;

Spring 对这种验证规则做了注解校验Validated;他们的功能大致相同;

如果需要对UserRequest对象中的字段进行校验,加上@Valid 注解,如果同时需要对内部的Card对象字段也做验证,在List cards上也需要加上@Valid注解;

如果加载cards上的@Vliad没有起到验证效果,手动验证

@PostMapping("/bind/card2")

public String bindCard(@Valid @RequestBody UserRequest request){

Validator validator = Validation.buildDefaultValidatorFactory().getValidator();

List cards = tb.getCards();

for (Card card : cards) {

Set> validates = validator.validate(card);

StringBuffer sb = new StringBuffer();

for(ConstraintViolation constraintViolation:validates) {

sb.append("字段:"+constraintViolation.getPropertyPath().toString()

+"--").append(constraintViolation.getMessage());

}

if(sb.length() > 0){

throw new RuntimeException(sb.toString());

}

}

、、、处理逻辑

}

这里获取Validator 验证器,对我们的参数直接进行验证,如果bankCard为空,就会抛出"字段:bankCard -- 银行卡不能为空"提示异常;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值