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>>>
是另一種可能的選擇,儘管不太常見。它們首先非同步提供回應狀態和標頭,然後第二個非同步提供回應主體。