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

Zwracanie NOT_FOUND

0 głosów
84 wizyt
pytanie zadane 15 września 2017 w Java przez Jonki Dyskutant (8,220 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 (25,240 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,220 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 (25,240 p.)
Pierwszy raz widze annotacje restControllerAdvice sprawdxales czy dziala bez czlonu rest ?

Podobne pytania

0 głosów
1 odpowiedź 65 wizyt
0 głosów
1 odpowiedź 73 wizyt
pytanie zadane 7 października 2017 w Java przez Jonki Dyskutant (8,220 p.)
0 głosów
2 odpowiedzi 70 wizyt
pytanie zadane 5 października 2017 w Java przez Jonki Dyskutant (8,220 p.)
Porady nie od parady
Zadając pytanie postaraj się o poprawną pisownię i czytelne formatowanie tekstu.Kompozycja

57,543 zapytań

102,549 odpowiedzi

211,501 komentarzy

29,371 pasjonatów

Przeglądających: 285
Pasjonatów: 21 Gości: 264

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...