加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 用于版本化实体的ETag支持

发布时间:2020-12-15 03:01:57 所属栏目:Java 来源:网络整理
导读:我打算为我的RESTfull Spring应用程序支持ETag.我公开的大多数资源都是在DB中进行版本控制的. 我知道ShallowEtagHeaderFilter,这不是我需要的,因为它只能节省带宽. 是否有一个适用于Spring MVC的生产就绪解决方案,它将ETag标头与暴露的实体版本相关联? 解决
我打算为我的RESTfull Spring应用程序支持ETag.我公开的大多数资源都是在DB中进行版本控制的.

我知道ShallowEtagHeaderFilter,这不是我需要的,因为它只能节省带宽.

是否有一个适用于Spring MVC的生产就绪解决方案,它将ETag标头与暴露的实体版本相关联?

解决方法

spring-data-rest支持这种开箱即用的功能,参见 the conditional request part of the reference documentation.

您还可以使用Spring Framework 4.2.0,它支持Controller方法返回的ResponseEntity类型的条件请求 – see reference documentation.

就像是:

@RequestMapping("/book/{id}")
public ResponseEntity<Book> showBook(@PathVariable Long id) {

    Book book = findBook(id);
    String version = book.getVersion();

    return ResponseEntity
                .ok()
                .cacheControl(CacheControl.maxAge(30,TimeUnit.DAYS))
                .eTag(version) // lastModified is also available
                .body(book);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读