ResponseEntity 就像 @ResponseBody,但有 状态 和 头信息。比如说:
@GetMapping("/something")
public ResponseEntity<String> handle() {
String body = ... ;
String etag = ... ;
// ResponseEntity 可以设置 contentType 等 response 中设置的属性
// 对于 body 来说,如果你的 body 是一个对象,那么没有配置消息转换器的话,就会报错
return ResponseEntity.ok().eTag(etag).build(body);
}
Spring MVC 支持使用 reactive type 来异步产生 ResponseEntity,这允许以下类型的异步响应:
ResponseEntity<Mono<T>>
或ResponseEntity<Flux<T>>
使响应状态和头信息立即为人所知,而 body 则在稍后时间异步提供。如果 body 由0...1
个值组成,则使用 Mono,如果可以产生多个值,则使用 Flux。Mono<ResponseEntity<T>>
在稍后阶段以异步方式提供所有三者—响应状态、头信息和正文。这使得响应状态和头信息可以根据异步请求处理的结果而变化。
例子
关于 response Entity 的相关实战例子