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
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
---

Ten komentarz został dodany przez osobę dodającą wpis (OP)
Zaakceptował: LeVentLeCri
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ł JSONa
---

Ten komentarz został dodany przez osobę dodającą wpis (OP)
Zaakceptował: LeVentLeCri
OP: @kenshin985 @bootcamp_java_developer @mccloud

Dobra, problem jest z serializacją, jeżeli klienty akceptują application/xml, to mój ExceptionHandler ma problem ze zwróceniem JSONa. Rozwiązaniem jest stworzenie odpowiedzi poprzez metody statyczne i buildera, gdzie mogę określić rodzaj body.

return ResponseEntity.status(HttpStatus.NOTACCEPTABLE).contentType(MediaType.APPLICATIONJSON).body(errorMessage);

---

Ten komentarz został dodany przez osobę dodającą wpis (OP)
Zaakceptował: LeVentLeCri