ResponseEntity
ResponseEntity 类似于 @ResponseBody,但带有状态和头。例如:
-
Java
@GetMapping("/something")
public ResponseEntity<String> handle() {
String body = ... ;
String etag = ... ;
return ResponseEntity.ok().eTag(etag).body(body);
}
正文通常作为值对象提供,由已注册的 HttpMessageConverters 之一渲染为相应的响应表示(例如 JSON)。
可以返回 ResponseEntity<Resource> 作为文件内容,将提供的资源的 InputStream 内容复制到响应 OutputStream。
注意,InputStream 应该由 Resource 句柄延迟检索,以便在复制到响应后可靠地关闭它。
如果您为此目的使用 InputStreamResource,请确保使用按需 InputStreamSource 构建它
(例如,通过检索实际 InputStream 的 lambda 表达式)。此外,InputStreamResource 的自定义子类仅在结合
自定义 contentLength() 实现时受支持,该实现避免为此目的消耗流。
Web MVC 支持使用单个值 响应式类型
异步生成 ResponseEntity,和/或正文的单值和多值响应式类型。这允许以下类型的异步响应:
-
ResponseEntity<Mono<T>>或ResponseEntity<Flux<T>>使响应状态和头立即可知,而正文在稍后异步提供。 如果正文包含 0..1 个值,请使用Mono;如果它可以生成多个值,请使用Flux。 -
Mono<ResponseEntity<T>>在稍后异步提供所有三个——响应状态、头和正文。 这允许响应状态和头根据异步请求处理的结果而变化。