【微服务】微服务接口参数校验

自定义标注参数校验

pom依赖

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

创建自定义注解

@Documented
@Constraint(validatedBy = PhoneNumberValidator.class)
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface PhoneNumber {
    String message() default "Invalid phone number";
    Class[] groups() default {};
    Class[] payload() default {};
}

创建校验规则

public class PhoneNumberValidator implements ConstraintValidator<PhoneNumber, String> {

    @Override
    public boolean isValid(String phoneField, ConstraintValidatorContext context) {
        if (phoneField == null) return true; // can be null
        return phoneField != null && phoneField.matches("[0-9]+")
                && (phoneField.length() > 8) && (phoneField.length() < 14);
    }
}

使用方式

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AccountDto {
    @PhoneNumber
    private String phoneNumber;
}

@Slf4j
@RestController
public class ParamVerifyController {

    @PostMapping("customParamVerify")
    @ResponseBody
    public String customParamVerify(@RequestBody @Valid AccountDto accountDto){
        log.info("Account {}",accountDto);
        return "ok";
    }
}

请求此接口,如果参数不满足校验规则,则会抛出异常。

org.springframework.web.bind.MethodArgumentNotValidException
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值