Spring Boot anpassen HTTP-Fehlerreaktion?

8

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%     
matsev 07.10.2014, 13:08
quelle

2 Antworten

7

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:

%Vor%

Weitere Informationen finden Sie in meinem Blogpost .

    
matsev 19.10.2014, 10:10
quelle
5

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.

%Vor%

Damit bekomme ich einen erweiterten JSON-Antworttext, zB

%Vor%     
Geoff Bourne 25.02.2017 21:40
quelle