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.
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
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
@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
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.
Żyjemy w państwie, w którym pigułkę antykoncepcyjną awaryjną która powoduje wczesną aborcję będzie można kupić już od 15 roku życia, ale energetyka dopiero od 18 lat xD
#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
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
Potem to można to wyciągnąć do aspekta i wszystkie endpointy obsłużyć.
Komentarz usunięty przez autora
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
PS. poczytaj o czymś takim jak @RequestHeader i Spring Validation
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
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
Chyba wiem jakie zadanie kolega robi i od kogo ;) z githubem?