|
对于最新的稳定版本,请使用 Spring Framework 6.2.10! |
响应实体
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 = ...
val etag = ...
return ResponseEntity.ok().eTag(etag).build(body)
}
正文通常将作为值对象提供,以呈现给相应的
由注册的其中一位的响应陈述 (e.g. JSON)HttpMessageConverters.
一个ResponseEntity<Resource>可以返回文件内容,复制InputStream响应所提供资源的内容OutputStream.请注意,InputStream应该由Resource处理,以便可靠地处理
将其复制到响应后将其关闭。如果您正在使用InputStreamResource为此,请确保使用按需构建它InputStreamSource(例如,通过检索实际InputStream).此外,自定义
的子类InputStreamResource仅支持与自定义contentLength()避免为此目的使用流的实现。
Spring MVC 支持使用单值响应式类型来生成ResponseEntity异步和/或单值和多值响应式
身体的类型。这允许以下类型的异步响应:
-
ResponseEntity<Mono<T>>或ResponseEntity<Flux<T>>使响应状态和 标头立即已知,而正文稍后以异步方式提供。 用Mono如果正文由 0..1 个值组成或Flux如果它可以产生多个值。 -
Mono<ResponseEntity<T>>提供所有三个 — 响应状态、标头和正文, 稍后异步。这允许响应状态和标头变化 取决于异步请求处理的结果。