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>>>
是另一种可能的,尽管较少见的选择。它们首先异步提供响应状态和头信息,然后第二个也是异步提供响应主体。