• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zwracanie NOT_FOUND

Object Storage Arubacloud
0 głosów
155 wizyt
pytanie zadane 15 września 2017 w Java przez Jonki Dyskutant (8,180 p.)
edycja 15 września 2017 przez Jonki

Posiadam kontroler, który zwraca użytkownika

@GetMapping(value = "/account/{username}")
    public
    HttpEntity<UserProfileDTO> getProfile(
            @ApiParam(value = "The user's name", required = true) @PathVariable String username
    ) {
        return Optional
                .ofNullable(userService.findOneByUsername(username))
                .map(user -> ResponseEntity.ok().body(converterUserToUserProfileDTO.convert(user)))
                .orElseGet(() -> ResponseEntity.notFound().build());
    }

w tej wersji kontroler zwraca 

ResponseEntity.notFound().build()

wszystko jet OK https://zapodaj.net/7f91c7119a9a1.png.html.

Jednak pomyślałem, aby spróbować coś wyrzucić w ResponseBody podczas rzucania błędu, dlatego utworzyłem wyjątek

@ResponseStatus(HttpStatus.NOT_FOUND)
public class ResourceNotFoundException extends RuntimeException {

    public ResourceNotFoundException(String message) {
        super(message);
    }
}

i kontroler dla niego

@RestControllerAdvice
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(ResourceNotFoundException.class)
    public ResponseEntity<String> handleResourceNotFoundException(ResourceNotFoundException ex) {
        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
    }
}

dodatkowo kontroler pobierający użytkownika rzuca teraz ten wyjątek zamiast zwracania NOT_FOUND

.orElseThrow(() -> new ResourceNotFoundException("User not found");

i tym oto sposobem dostaję NIC https://zapodaj.net/68c19d8b8e34e.png.html. Nawet brak kodu błędu. Może ktoś powiedzieć mi co robię nie tak?

1 odpowiedź

0 głosów
odpowiedź 15 września 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Nie powinnieneś zamiast orElseGet dać orElseThrow? Wtedy rzucisz wyjątek i uruchomisz całą logike obsługi.
komentarz 15 września 2017 przez Jonki Dyskutant (8,180 p.)
Sorry. Źle skopiowałem, bo tutaj na forum pisałem kod o który mi chodzi.
komentarz 15 września 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Pierwszy raz widze annotacje restControllerAdvice sprawdxales czy dziala bez czlonu rest ?

Podobne pytania

+1 głos
1 odpowiedź 227 wizyt
pytanie zadane 11 listopada 2020 w Java przez siemasiema123.96 Początkujący (350 p.)
0 głosów
2 odpowiedzi 180 wizyt

92,568 zapytań

141,420 odpowiedzi

319,619 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...