此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.2.0! |
ResponseEntity
ResponseEntity
就像@ResponseBody
但有 status 和 headers。例如:
-
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 = ...
val etag = ...
return ResponseEntity.ok().eTag(etag).build(body)
}
body 通常作为 value 对象提供,以渲染到相应的
响应表示形式(例如,JSON),由一个已注册的HttpMessageConverters
.
一个ResponseEntity<Resource>
对于文件内容,则复制InputStream
content provided resource 的响应OutputStream
.请注意,InputStream
应该由Resource
handle 以便可靠地
在将其复制到响应后将其关闭。如果您正在使用InputStreamResource
为此,请确保使用 on-demand 构造它InputStreamSource
(例如,通过检索实际的InputStream
).此外,自定义
的子类InputStreamResource
仅支持与自定义contentLength()
实现,以避免为此目的消耗流。
Spring MVC 支持使用单值响应式类型来生成ResponseEntity
异步和/或单值和多值响应式
body 的类型。这允许以下类型的异步响应:
-
ResponseEntity<Mono<T>>
或ResponseEntity<Flux<T>>
将响应状态设为 标头,而正文将在稍后异步提供。 用Mono
如果主体由 0..1 值组成,或者Flux
如果它可以产生多个值。 -
Mono<ResponseEntity<T>>
提供所有三个 — 响应状态、标头和正文, 异步的。这允许响应状态和标头发生变化 取决于异步请求处理的结果。