Java 如何简单地检查请求正文是否为空或请求正文是否有空字段?

Java 如何简单地检查请求正文是否为空或请求正文是否有空字段?,java,json,spring-boot,request,http-post,Java,Json,Spring Boot,Request,Http Post,嗨,我有一个接受POST请求的控制器 请求正文可以是空的,也可以带有空字段的正文:即或{} @RestController public class UserController { @Autowired private UserService UserService; @RequestMapping(value = "/tree", method = POST,consumes = MediaType.APPLICATION_JSON_VALUE) public

嗨,我有一个接受POST请求的控制器

请求正文可以是空的,也可以带有空字段的正文:即或{}

@RestController
public class UserController {
    @Autowired
    private UserService UserService;
    @RequestMapping(value = "/tree", method = POST,consumes = MediaType.APPLICATION_JSON_VALUE)
    public List<ResponseUser> controller(@RequestBody(required=false) UserDataRequest request) {
        return UserService.send(request);
    }
}
@RestController
公共类用户控制器{
@自动连线
私人用户服务;
@RequestMapping(value=“/tree”,method=POST,consumes=MediaType.APPLICATION\u JSON\u value)
公共列表控制器(@RequestBody(required=false)UserDataRequest){
返回UserService.send(请求);
}
}
我的服务定义如下:

  • 检查主体是否为空,即null
  • 逐个检查字段是否为空
  • 如果字段为空,则再次执行步骤1
  • @服务
    公共类用户服务{
    @自动连线
    私有RestTemplate RestTemplate;
    私人责任;
    公共列表发送(UserDataRequest数据){
    //空正文==null
    如果(数据==null){
    //返回ResponseUser类型的列表1
    }
    否则{
    //检查字段是否存在或不存在
    Optional id=Optional.ofNullable(data.getid());
    Optional search=Optional.ofNullable(data.getsearch());
    //如果有身份证
    if(id.isPresent()){
    //返回ResponseUser类型的列表2
    }
    //如果存在搜索
    else if(search.isPresent()){
    //返回ResponseUser类型的列表3
    }
    否则{
    //返回ResponseUser类型的列表1
    }
    }
    返回responseEntity.getBody();
    }
    }
    

    我想知道如何不再重复同样的事情?有什么有效的方法吗?

    将验证注释添加到Pojo类中

    public class UserDataRequest {
    @NotNull
    private String id;
    
    @NotNull
    private String search;
    }
    
    更新post方法以使用此验证

     public List<ResponseUser> send(@Valid UserDataRequest data){}
    
    公共列表发送(@Valid UserDataRequest data){}
    
    它不能满足所有情况,请求可以为空或{}。。此外,id和search也可以为null。
     public List<ResponseUser> send(@Valid UserDataRequest data){}