两者的区别这里不做介绍,要了解请自行google。主要写下之前用到时踩过的坑
- 对于对象的校验,通过@Valid就可以,校验对象可以定义为一下形式
public class Item{
@NotBlank
private String name;
@Min(value = 0)
private int age;
@Valid
@NotEmpty
private List<Prop> props;
}
用法如下:
@PostMapping("/test")
public TestResponse test(@Valid @RequestBody Item item) {
.....
}
- 对于传入参数为基本类型,需要在controller加上Validated,用法如下
@RestController
@RequestMapping("/api/v1/test")
@Validated
public class TestController {
....
@PutMapping("/{userName}/update/age")
public void updateAge(@PathVariable String userName,
@Min(value = 1) @RequestParam("age") Integer age) {
.....
}
}
对于上面的代码,有一点需要注意,参数为基本类型需要校验时,@RequestParam 是不能省略的,不然参数是无法传到后台,而且通过swagger调用时,会显示该参数的类型为body类型。