• 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
86 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,800 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,800 p.)
Pierwszy raz widze annotacje restControllerAdvice sprawdxales czy dziala bez czlonu rest ?

Podobne pytania

0 głosów
1 odpowiedź 69 wizyt
pytanie zadane 8 lutego 2018 w Java przez Mrmatiii Początkujący (280 p.)
0 głosów
1 odpowiedź 82 wizyt
pytanie zadane 7 października 2017 w Java przez Jonki Dyskutant (8,220 p.)
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.SPOJ

60,273 zapytań

105,971 odpowiedzi

220,187 komentarzy

32,477 pasjonatów

Przeglądających: 246
Pasjonatów: 14 Gości: 232

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.

...