ResponseEntity
ResponseEntity
は @ResponseBody
に似ていますが、ステータスとヘッダーがあります。例:
Java
Kotlin
@GetMapping("/something")
public ResponseEntity<String> handle() {
String body = ... ;
String etag = ... ;
return ResponseEntity.ok().eTag(etag).body(body);
}
@GetMapping("/something")
fun handle(): ResponseEntity<String> {
val body: String = ...
val etag: String = ...
return ResponseEntity.ok().eTag(etag).build(body)
}
WebFlux は、単一値のリアクティブ型を使用して ResponseEntity
を非同期的に生成すること、および / またはボディの単一値および複数値のリアクティブ型を使用することをサポートします。これにより、次のように ResponseEntity
でさまざまな非同期レスポンスが可能になります。
ResponseEntity<Mono<T>>
またはResponseEntity<Flux<T>>
は、レスポンスステータスとヘッダーをすぐに通知しますが、本文は後の時点で非同期に提供されます。本体が 0..1 値で構成されている場合はMono
を使用し、複数の値を生成できる場合はFlux
を使用します。Mono<ResponseEntity<T>>
は 3 つすべてを提供します — 後の時点で非同期的に、レスポンスステータス、ヘッダー、本文。これにより、非同期リクエスト処理の結果に応じて、レスポンスのステータスとヘッダーを変えることができます。Mono<ResponseEntity<Mono<T>>>
またはMono<ResponseEntity<Flux<T>>>
は、あまり一般的ではありませんが、さらに別の可能性があります。これらは、最初にレスポンスステータスとヘッダーを非同期で提供し、次にレスポンス本体を非同期で提供します。