HTTP请求中返回文件

HTTP的一个请求或响应,都叫做实体(entity)。在Spring中,有一个HttpEntity类,就表示HTTP请求实体,它有两个子类RequestEntity和ResponseEntity,分别表示请求实体和响应实体。

不论是请求实体还是响应实体,都包含首部(header)和主体(body)(对于GET请求,body可能为空)。在Spring中,表示header的类为HttpHeaders,HttpHeaders是MultiValueMap<String, String>的子类,说明一个header可以有多个值;而body则为泛型,可以为任意类型。

 

RequestEntity 的使用

RequestEntity 相对于

 

ResponseEntity 的使用

ResponseEntity 是HTTP响应实体,相对于父类HttpEntity,增加了响应状态码。状态码用类HttpStatus表示,它包含了状态值(value,如200)和原因短语(reason phrase,如OK)。

ResponseEntity 可以在HTTP客户端请求数据时使用,也可以在HTTP服务端处理请求时使用。

HTTP客户端通过RestTemplate的getForEntity() 或 exchange() 方法请求数据时返回ResponseEntity:

ResponseEntity<String> entity = template.getForEntity("https://example.com", String.class);
String body = entity.getBody();
MediaType contentType = entity.getHeaders().getContentType();
HttpStatus statusCode = entity.getStatusCode();

在Spring的Controller方法中使用ResponseEntity:

@RequestMapping("/handle")
public ResponseEntity<String> handle() {
    URI location = ...;
    HttpHeaders responseHeaders = new HttpHeaders();
    responseHeaders.setLocation(location);
    responseHeaders.set("MyResponseHeader", "MyValue");
    return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED);
}

 

参考文档

 

上一篇:linux command - 拷贝某文件夹下,按名称排序后前n个文件


下一篇:xargs和文件打包和压缩