@RequestBody、@RequestParam、@PathVariable注解的参数使用参数正则校验

本文介绍了如何在SpringMVC中使用Lombok的@Validated注解对@RequestBody、@RequestParam和@PathVariable进行正则表达式校验,以及它们各自校验规则的设置和异常处理机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次主要介绍@RequestBody、@RequestParam、@PathVariable如何使用正则校验

@RequestBody

参数DTO

import lombok.Data;

import javax.validation.constraints.Pattern;

/**
 * Validated正则校验@RequestBody测试Dto
 *
 * @author zj1250
 * date 2024/04/16
 */
@Data
public class TestRequestBodyDto {
    @Pattern(regexp = "^[A-Za-z0-9]+$", message = "accountCode参数格式错误")
    private String accountCode;

    @Pattern(regexp = "^[0-9]+$", message = "phoneNumber参数格式错误")
    private String phoneNumber;
}
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * Validated参数校验测试类
 *
 * @author zj1250
 * date 2024/04/16
 */
@RestController
public class TestValidatedController {

    @ApiOperation("@RequestBody参数校验")
    @PostMapping("/testRequestBody")
    public void testRequestBody(@Validated @RequestBody TestRequestBodyDto dto) {

    }

}

@RequestBody参数类型的需要在@RequestBody前加上@Validated才能保证参数校验生效。

@RequestParam

import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.constraints.Pattern;

/**
 * Validated参数校验测试类
 *
 * @author zj1250
 * date 2024/04/16
 */
@RestController
@Validated
public class TestValidatedController {

    @ApiOperation("@RequestParam参数校验")
    @PostMapping("/testRequestParam")
    public void testRequestBody(@RequestParam @Pattern(regexp = "^[A-Za-z0-9]+$", message = "accountCode参数格式错误") String accountCode) {

    }

}

@RequestParam参数类型的需要在类上加上@Validated才能保证参数校验生效。

@PathVariable

import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 * Validated参数校验测试类
 *
 * @author zj1250
 * date 2024/04/16
 */
@RestController
public class TestValidatedController {

    @ApiOperation("@PathVariable参数校验")
    @PostMapping("/testPathVariable/{accountCode:^[A-Za-z0-9]+$}")
    public void testRequestBody(@PathVariable("accountCode") String accountCode) {

    }

}

@PathVariable参数校验比较特殊,在path中加上:正则表达式进行校验,在测试的时候,需要注意的是如果不满足该正则规则,接口会返回404。而不是参数校验失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值