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>>> 是另一种 可能的,尽管不太常见的替代方案。它们首先异步提供响应状态和头部信息,然后异步提供响应体。