How should I correctly implement dynamic searching in my rest api request? My rest api is divided into Controller -> Service -> Repository. I created GET request to get all drivers from database:
@GetMapping
public ResponseEntity<Set<DriverDTO>> getAll(@PageableDefault(value = 15) Pageable pageable) {
Page<DriverEntity> driverEntities = driverService.getAll(pageable);
Set<DriverDTO> driverDTOSet = modelMapperService.mapPageToSetOfEnteredClass(driverEntities, DriverDTO.class);
return new ResponseEntity<>(driverDTOSet, HttpStatus.OK);
}
and now I would like to add some searching parameters for example name, ageUpToX... so I added @RequestParams:
@GetMapping
public ResponseEntity<Set<DriverDTO>> getAll(@PageableDefault(value = 15) Pageable pageable,
@RequestParam String name,
@RequestParam int ageUpTo,
@RequestParam int ageOver) {
Page<DriverEntity> driverEntities = driverService.getAll(pageable);
Set<DriverDTO> driverDTOSet = modelMapperService.mapPageToSetOfEnteredClass(driverEntities, DriverDTO.class);
return new ResponseEntity<>(driverDTOSet, HttpStatus.OK);
}
Method getAll() from service looks like:
public Page<DriverEntity> getAll(Pageable pageable) {
return driverEntityRepository.findAll(pageable);
}
So what is next? Should I add every requestParam to getAll method like: getAll(String name, int ageUpTo,int ageOver) and checking in few if loops if field is empty/ != null? Or maybe by some switch?