本次主要介绍@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。而不是参数校验失败。