HTTP-Response-Exception Handling im Frühjahr 5 Reaktive
Entwickle ich einige reaktive microservices mit Spring Boot 2 und die Feder 5 mit WebFlux reaktive starter.
Ich stehe vor dem folgenden problem: ich möchte, um alle HTTP-Status, die ich empfangen von anrufen weitere REST-Services und wirft eine exception, wenn ich ein paar schlechte HTTP-Status. Zum Beispiel, wenn ich rufen Sie einen Endpunkt aus und ich erhalte einen 404-HTTP-Status, will ich eine Ausnahme und diese Ausnahme behandelt werden, in einigen ExceptionHandler-Klasse, nur die Art, wie es war im Frühjahr 4 mit @ControllerAdvice
.
Was ist der richtige Weg, dies zu tun? Hoffe auf einige gute Vorschläge.
- Sie können auch finden -stackoverflow.com/questions/43575538/... stackoverflow.com/questions/49137253/...
- Sie können auch finden, stackoverflow.com/questions/49137253/... stackoverflow.com/questions/43575538/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser angesprochen werden kann in zwei unabhängige Teile.
Wie konvertieren von HTTP 404-Antworten, die durch WebClient in benutzerdefinierte Ausnahmen
Bei der Verwendung
WebClient
erhalten Sie HTTP 404 Antworten von remote-services. Standardmäßig, alle4xx
und5xx
client Antworten wird verwandelt werden inWebClientResponseException
. So können Sie direkt mit den Ausnahmen in Ihrer WebFlux app.Wenn Sie möchten, um wiederum nur 404-Antworten in benutzerdefinierten Ausnahmen, können Sie Folgendes tun:
Dies ist natürlich auf einer pro-client-call-basis.
Erreichen Sie dieselbe in einem mehr wiederverwendbare Art und Weise mit einem
ExchangeFilterFunction
dass Sie ein für alle mal auf eineWebClient
Instanz wie folgt:Zu behandeln, wie benutzerdefinierte Ausnahmen in WebFlux apps
Mit Feder WebFlux mit Anmerkungen, können Sie die Ausnahmen behandeln mit Methoden versehen mit
@ExceptionHandler
(siehe Spring Framework reference documentation).Hinweis: die Verwendung eines
WebExceptionHandler
ist möglich, aber es ist ziemlich low-level, da wirst du keine high-level-support: Sie müssen manuell schreiben ist die Reaktion mit Puffer ohne Unterstützung für die Serialisierung.WebClientResponseException
in einem nicht-Webflux app? Mein Verständnis ist, dass@ExceptionHandler
wird nur unterstützt, in contollers.Ich denke was du suchst ist
WebFluxResponseStatusExceptionHandler
das Kontrollkästchen dieses für Referenz.Dieses Beispiel helfen kann, habe nicht selber ausprobiert.