对于最新的稳定版本,请使用 Spring Framework 7.0.6!spring-doc.cadn.net.cn

ResponseEntity

ResponseEntity 类似于 @ResponseBody,但带有状态和头信息。例如:spring-doc.cadn.net.cn

@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,以及用于正文的单值和多值响应式类型。这允许如下所示的多种异步响应:spring-doc.cadn.net.cn

  • ResponseEntity<Mono<T>>ResponseEntity<Flux<T>> 会立即使响应状态和头信息可知,而正文会在稍后异步提供。 如果正文包含 0..1 个值,请使用 Mono,如果它能生成多个值,请使用 Fluxspring-doc.cadn.net.cn

  • Mono<ResponseEntity<T>> 提供了所有三个要素——响应状态、标头和正文,并在稍后异步提供。这允许根据异步请求处理的结果来改变响应状态和标头。spring-doc.cadn.net.cn

  • Mono<ResponseEntity<Mono<T>>>Mono<ResponseEntity<Flux<T>>> 是另一种可能的选项,尽管不太常见。它们首先异步提供响应状态和头信息,然后异步提供响应体。spring-doc.cadn.net.cn