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