Как проверить, является ли тело запроса пустым или тело запроса имеет пустые поля простым способом? - PullRequest
0 голосов
/ 01 октября 2019

Привет У меня есть контроллер, который принимает запрос 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);
    }
}

У меня определена службаследующим образом:

  1. Чтобы проверить, является ли тело пустым, т.е. нулевым
  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();
    }
}

Я хотел бы знать, как не повторить то же самое снова? Есть ли эффективный способ?

1 Ответ

1 голос
/ 01 октября 2019

Добавьте аннотацию валидации в ваш класс Pojo

public class UserDataRequest {
@NotNull
private String id;

@NotNull
private String search;
}

обновите метод публикации, чтобы использовать эту проверку

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