跳到主要内容
版本:7.0.3

ResponseEntity

Hunyuan 7b 中英对照 ResponseEntity

ResponseEntity 类似于 @ResponseBody,但它还包含了状态码(status)和请求头(headers)。例如:

@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(例如,通过一个lambda表达式来获取实际的InputStream)。此外,InputStreamResource的自定义子类仅在与自定义的contentLength()实现结合使用时才被支持,这样可以避免为此目的消耗流资源。

Spring MVC支持使用单个值反应式类型来异步生成ResponseEntity,和/或为响应体使用单个及多个值的反应式类型。这允许以下类型的异步响应:

  • ResponseEntity<Mono<T>>ResponseEntity<Flux<T>> 可以立即告知响应状态和头部信息,而响应体则会在稍后异步提供。如果响应体包含 0 到 1 个值,使用 Mono;如果可能包含多个值,则使用 Flux

  • Mono<ResponseEntity<T>> 可以在稍后异步提供响应状态、头部信息和响应体这三部分内容。这样,响应状态和头部信息就可以根据异步请求处理的结果而有所不同。