交換
exchangeToMono()
メソッドと exchangeToFlux()
メソッド(または Kotlin では awaitExchange { }
と exchangeToFlow { }
)は、レスポンスステータスに応じて異なる方法でレスポンスをデコードするなど、より高度な制御が必要な高度なケースに役立ちます。
Java
Kotlin
Mono<Person> entityMono = client.get()
.uri("/persons/1")
.accept(MediaType.APPLICATION_JSON)
.exchangeToMono(response -> {
if (response.statusCode().equals(HttpStatus.OK)) {
return response.bodyToMono(Person.class);
}
else {
// Turn to error
return response.createError();
}
});
val entity = client.get()
.uri("/persons/1")
.accept(MediaType.APPLICATION_JSON)
.awaitExchange {
if (response.statusCode() == HttpStatus.OK) {
return response.awaitBody<Person>()
}
else {
throw response.createExceptionAndAwait()
}
}
上記を使用する場合、返された Mono
または Flux
が完了した後、レスポンス本体がチェックされ、消費されない場合は解放されて、メモリと接続のリークが防止されます。レスポンスをさらにダウンストリームでデコードすることはできません。必要に応じてレスポンスをデコードする方法を宣言するのは、提供された関数次第です。