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>> 异步提供所有三个内容:响应状态、标头和主体。这使得响应状态和标头可以根据异步请求处理的结果而有所不同。

  • Mono<ResponseEntity<Mono<T>>>Mono<ResponseEntity<Flux<T>>> 是另一种可能的替代方案,尽管不太常见。它们首先异步提供响应状态和标头,然后异步提供响应主体。