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

标签 java json spring-boot request http-post

嗨,我有接受 POST 请求的 Controller 。

请求正文可以为空或正文为空字段:即或 { }

@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);
    }
}

我的服务定义如下:

  1. 检查正文是否为空,即 null
  2. 逐一检查字段是否为空
  3. 如果字段为空,则再次执行步骤 1
@Service
public class UserService {

    @Autowired
    private RestTemplate restTemplate;

    private ResponseEntity<List<ResponseUser>> responseEntity;

    public List<ResponseUser> send(UserDataRequest data){


        //empty body == null
    if(data == null ) {
           // return list1 of type ResponseUser
        }
    else{

       //Check for the fields are present are not
        Optional<String> id = Optional.ofNullable(data.getid());
        Optional<String> search = Optional.ofNullable(data.getsearch());

        //if id is present 
        if (id.isPresent()) {
            // return list2 of type ResponseUser

        }

        //if search is present 
        else if(search.isPresent()){
        // return list3 of type ResponseUser

            }

        else {
        // return list1 of type ResponseUser
        }
    }
    return responseEntity.getBody();
    }
}

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

最佳答案

向您的 Pojo 类添加验证注释

public class UserDataRequest {
@NotNull
private String id;

@NotNull
private String search;
}

更新您的发布方法以使用此验证

 public List<ResponseUser> send(@Valid UserDataRequest data){}

关于java - 如何简单地检查请求正文是否为空或请求正文是否有空字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58188244/

相关文章:

Java : Cancel a running process( or task) by clicking a button in webapplication in spring

java - 获取自己的 MBean 的所有已注册实例

c# - 将 JSON 对象传递给 WebApi

javascript - 如何拆分 Angular 属性字符串并一起使用这些属性类型的多个,而不是使用嵌套的 ng-repeat 指令?

json - 在 ColdFusion 中创建嵌套 JSON

java - 将Spring Boot项目发布为Maven存储库中的库

java - 重新读取配置而不重启

java - 为什么流畅的实现比非流畅的实现慢?

java - 我可以在我的一个测试类中获得 Spring @Value,但不能在其他测试类中获得 Spring @Value

Java 堆大小值不会发生变化