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>>>是另一種可能(儘管不那麼常見)的替代方案。它們首先非同步提供響應狀態和頭部資訊,然後非同步提供響應主體。