返回介绍

16.4.4 抽取响应的元数据

发布于 2024-08-17 00:45:49 字数 1241 浏览 0 评论 0 收藏 0

作为getForObject()的一个替代方案,RestTemplate还提供了getForEntity()。getForEntity()方法与getForObject()方法的工作很相似。getForObject()只返回资源(通过HTTP信息转换器将其转换为Java对象),getForEntity()会在ResponseEntity中返回相同的对象,而且ResponseEntity还带有关于响应的额外信息,如HTTP状态码和响应头。

我们可能想使用ResponseEntity所做的事就是获取响应头的一个值。例如,假设除了获取资源,还想要知道资源的最后修改时间。假设服务端在LastModified头部信息中提供了这个信息,我们可以这样像这样使用getHeaders()方法:

getHeaders()方法返回一个HttpHeaders对象,该对象提供了多个便利的方法来查询响应头,包括getLastModified(),它将返回从1970年1月1日开始的毫秒数。

除了getLastModified(),HttpHeaders还包含如下的方法来获取头信息:

为了实现更通用的HTTP头信息访问,HttpHeaders提供了get()方法和getFirst()方法。两个方法都接受String参数来标识所需要的头信息。get()将会返回一个String值的列表,其中的每个值都是赋给该头部信息的,而getFirst()方法只会返回第一个头信息的值。

如果你对响应的HTTP状态码感兴趣,那么你可以调用getStatusCode()方法。例如,考虑下面这个获取Spittle对象的方法:

在这里,如果服务器响应304状态,这意味着服务器端的内容自从上一次请求之后再也没有修改。在这种情况下,将会抛出自定义的NotModifiedException异常来表明客户端应该检查它的缓存来获取Spittle。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文