Wpis z mikrobloga

#anonimowemirkowyznania
#programowanie #naukaprogramowania #java

Muszę obsłużyć błąd w Springu, jeżeli klient umieści zły header accept. Normalnie aplikacja zwraca JSONy. Próbowałem to zrobić z ControllerAdvice, ExceptionHandler, ale nie jest zwracany ResponseEntity po rzuceniu wyjątku, tylko logi w konsoli. Rozumiem, że nawet ze złymi nagłówkami żądanie przechodzi przez kontroler i dopiero potem jest wykrywany brak możliwości obsłużenia takiego formatu, jeżeli ktoś da w accept np. application/pdf? Chciałbym, żeby w chwili wykrycia w kontrolerze nieprawidłowych nagłówków był zwracany ResponseEntity i żądanie nie przechodziło dalej.

Jak rozwiązać ten problem?

---
Kliknij tutaj, aby odpowiedzieć w tym wątku anonimowo
Kliknij tutaj, aby wysłać OPowi anonimową wiadomość prywatną
ID: #630b2ef6e1ffb3d8a8a62362
Post dodany za pomocą skryptu AnonimoweMirkoWyznania ( https://mirkowyznania.eu ) Zaakceptował: LeVentLeCri
Roczny koszt utrzymania Anonimowych Mirko Wyznań wynosi 235zł. Wesprzyj projekt
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

OP: @mccloud

Takie mam wymagania, że aplikacja ma zwracać ResponseEntity z kodem i kilkoma informacjami. Jeżeli dam produces application/json to wtedy nic nie zwraca kontroler, a konsola drukuje WARN o treści Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation]
Czyli API z którym się łączę rzuca HttpMediaTypeNotAcceptableException, ale nie mogę za chiny ludowe obsłużyć tego wyjątku
  • Odpowiedz
OP: @mccloud

Chodzi o to, jak zwrócić odpowiedź w postaci JSONa z kilkoma polami? bo kiedy ExceptionHandler obsługuje ten wyjątek HttpMediaTypeNotAcceptableException i jest VOID i np. drukuje coś w konsoli to wszystko działa jak powinno.

Problem pojawia się wtedy, kiedy próbuję zwrócić ResponseEntity. Chcę, żeby mój ControllerAdvice obsłużył wyjątek HttpMediaTypeNotAcceptableException i zwrócił
  • Odpowiedz
@AnonimoweMirkoWyznania:
No dobra, czyli w ControllerAdvice wyłapujesz wyjątek HttpMediaTypeNotAcceptableException i zwracasz void i jest ok, a jak chcesz zwrócić ResponseEntity to masz problem? Jaki problem, jakie błędy dostajesz? Bez problemu powinieneś móc zwrócić swój błąd jako json
  • Odpowiedz