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

前端之家收集整理的这篇文章主要介绍了java – 用于版本化实体的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);
}

猜你在找的Java相关文章