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>>> は、あまり一般的ではありませんが、さらに別の可能性があります。これらは、最初にレスポンスステータスとヘッダーを非同期で提供し、次にレスポンス本体を非同期で提供します。