Elo wszystkim :) przejdę od razu do problemu, mam metodę restową get w której podaje id i dostaje zasób. Gdy znajduję mi zasób wszystko jest ok dostaję status code 200 a w body mam dany zasób. Gdy danego zasobu nie ma powinno rzucić status code 404 a wyrzuca mi 500 Internal Server Error z wyjątkiem z serwisu który obsługuję całą logikę. Jak poprawnie obsłużyć takie żądanie ?
metoda w kontrolerze
@GetMapping("/api/jobs/{id}")
public ResponseEntity<?> getSingleJob(@PathVariable("id") Long id) {
return jobOfferService.getSingleJobById(id)
.map(offer -> ResponseEntity
.ok()
.location(URI.create("/api/jobs/" + offer.getId()))
.body(offer))
.orElseThrow(()-> new ResponseStatusException(NOT_FOUND, "No job offers with this id found !"));
}
metoda z serwisu
public Optional<JobDto> getSingleJobById(long id) {
return Optional.of(JobDtoMapper.mapToJobDto(jobRepository.findById(id)
.orElseThrow(() -> new JobExceptionHandler("No job offers with this id found !"))));
}