使用@RequestBody如何强校验必传项
时间: 2024-01-20 08:16:48 浏览: 102
使用@RequestBody注解可以将请求体中的数据绑定到方法的参数上。如果需要对请求体中的数据进行强校验,可以结合使用@Valid注解和校验器(Validator)来实现。
首先,需要定义一个校验器类,该类需要实现Validator接口,并重写validate方法,用于定义校验逻辑。例如,我们定义一个User类作为请求体的实体类,其中包含一个必传项name:
```java
public class User {
@NotBlank(message = "name不能为空")
private String name;
// getter和setter方法
}
```
然后,在控制器方法中使用@Valid注解标注需要校验的参数,并在方法参数中添加BindingResult参数,用于接收校验结果:
```java
@PostMapping("/user")
public void addUser(@Valid @RequestBody User user, BindingResult result) {
if (result.hasErrors()) {
// 校验失败,处理错误信息
List<ObjectError> errors = result.getAllErrors();
for (ObjectError error : errors) {
System.out.println(error.getDefaultMessage());
}
} else {
// 校验通过,执行业务逻辑
// ...
}
}
```
在上述代码中,@Valid注解用于告诉Spring对user参数进行校验,校验结果会存储在BindingResult对象中。如果校验失败,可以通过遍历BindingResult对象中的错误信息来获取具体的校验错误。
需要注意的是,为了使校验生效,还需要在Spring Boot的配置类中添加以下配置:
```java
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(new RequestResponseBodyMethodProcessor(resolvers));
}
}
```
这样,当请求体中的必传项缺失时,会返回对应的错误信息。
阅读全文