Wie kann ich den Antwortstatuscode und die Daten im Antworthauptteil anpassen, wenn eine Ausnahme in einer Spring Boot-Webanwendung auftritt?
Ich habe eine Webanwendung erstellt, die eine benutzerdefinierte Ausnahme auslöst, wenn aufgrund eines schlechten internen Status etwas unerwartetes auftritt. Folglich sieht der Antworttext der Anfrage, die den Fehler ausgelöst hat, ungefähr so aus:
%Vor%Nun möchte ich den Statuscode ändern und die Felder im Antworttext festlegen. Eine Lösung, die mir in den Sinn kam, war etwas wie:
%Vor%Allerdings hat das (wie vermutet) eine völlig andere Antwort erzeugt:
%Vor%Der HTTP-Antwortstatuscode kann mithilfe der HttpServletResponse.sendError (int) Methode, zB
%Vor% Alternativ können Sie den Ausnahmetyp in der Annotation @ExceptionHandler
deklarieren, wenn Sie mindestens zwei Ausnahmen zum Generieren desselben Antwortstatus haben:
Weitere Informationen finden Sie in meinem Blogpost .
Wie bereits erwähnt, erstellt Spring Boot den "standardmäßigen" Fehlerantworttext in org.springframework.boot.autoconfigure.web.DefaultErrorAttributes
. Ähnlich wie bei Ihren Bedürfnissen wollte ich all das nutzen, aber einfach ein weiteres "Typ" -Feld erweitern, das von einigen meiner Ausnahmen bereitgestellt wurde.
Ich habe das getan, indem ich ein Component
implementiert habe, das DefaultErrorAttributes
unterklassifiziert hat. Der Spring-Boot-Modus hat ihn automatisch übernommen und anstelle der Standardeinstellungen verwendet.
Damit bekomme ich einen erweiterten JSON-Antworttext, zB
%Vor%Tags und Links java rest error-handling spring-boot