このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring Framework 6.1.14 を使用してください!

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 = ...
	val etag = ...
	return ResponseEntity.ok().eTag(etag).build(body)
}

The body will usually be provided as a value object to be rendered to a corresponding response representation (for example, JSON) by one of the registered HttpMessageConverters.

ResponseEntity<Resource> can be returned for file content, copying the InputStream content of the provided resource to the response OutputStream. Note that the InputStream should be lazily retrieved by the Resource handle in order to reliably close it after it has been copied to the response. If you are using InputStreamResource for such a purpose, make sure to construct it with an on-demand InputStreamSource (for example, through a lambda expression that retrieves the actual InputStream). Also, custom subclasses of InputStreamResource are only supported in combination with a custom contentLength() implementation which avoids consuming the stream for that purpose.

Spring MVC は、ResponseEntity を非同期的に生成する単一値のリアクティブ型の使用、および / または本体の単一値および複数値のリアクティブ型の使用をサポートします。これにより、次の型の非同期レスポンスが可能になります。

  • ResponseEntity<Mono<T>> または ResponseEntity<Flux<T>> は、レスポンスステータスとヘッダーをすぐに通知しますが、本文は後の時点で非同期に提供されます。本体が 0..1 値で構成されている場合は Mono を使用し、複数の値を生成できる場合は Flux を使用します。

  • Mono<ResponseEntity<T>> は 3 つすべてを提供します — 後の時点で非同期的に、レスポンスステータス、ヘッダー、本文。これにより、非同期リクエスト処理の結果に応じて、レスポンスのステータスとヘッダーを変えることができます。