• 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
81 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 Pasjonat (23,860 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 Pasjonat (23,860 p.)
Pierwszy raz widze annotacje restControllerAdvice sprawdxales czy dziala bez czlonu rest ?

Podobne pytania

0 głosów
1 odpowiedź 60 wizyt
0 głosów
1 odpowiedź 65 wizyt
pytanie zadane 7 października 2017 w Java przez Jonki Dyskutant (8,220 p.)
0 głosów
2 odpowiedzi 68 wizyt
pytanie zadane 5 października 2017 w Java przez Jonki Dyskutant (8,220 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

54,399 zapytań

98,269 odpowiedzi

202,116 komentarzy

26,714 pasjonatów

Przeglądających: 302
Pasjonatów: 26 Gości: 276

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.

...