我打算为我的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); }