Ich arbeite an einer Java Spring -Boot -Anwendung, die eine Webclient zur Behandlung von REST -HTTP -Anforderung implementiert. GET -Anfragen werden zu einem Endpunkt gerufen und die Antwort wird empfangen und einem Mono zugeordnet und dann in der Anwendung weiter verarbeitet. Eine abgespeckte Version der ursprünglichen Methode sieht ähnlich aus: < /p>
Code: Select all
Optional result = client.get()
.uri("/entities/{id}", id).accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(MyEntity.class)
.blockOptional();
Jetzt möchte ich den RAW JSON-Reaktionskörper 'abfangen' und ihn mit einem asynchronen (oder nicht blockierenden) E/A-Operation bestehen, ohne den Antwortenfluss durch den Reaktionenfluss zu blockieren oder zu behindern Der Endpunkt. Der Körper wird zuerst in eine Zeichenfolge bestehen, an die Methode übergeben, und dann wird der Körper der MyEntity -Klasse zugeordnet. Eine modifizierte Methode, die erfolgreich anhält und den String -Körper in MyEntity zurückkehren ähnelt ähnlich wie folgt:
Code: Select all
Optional result = client.get()
.uri("/entities/{id}", id).accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(String.class)
.doOnNext(responseBody -> persistResponse(responseBody))
.doOnNext(savedResponse -> mapToMyEntity(savedResponse))
.blockOptional();
Ich bin mir nicht sicher, dass dies tatsächlich die richtige Möglichkeit ist, die Funktionalität zu implementieren, und möchte einige Anleitungen zum korrekten Umgang mit dem JSON -Reaktionskörper asynchron, ohne den vorhandenen Fluss zu behindern.