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