2013-09-03 9 views
7

私はRESTfull Springアプリケーション用のETagをサポートする予定です。私が公開するほとんどのリソースはDBにバージョン管理されています。バージョンエンティティ用のSpringでのETagサポート

私はShallowEtagHeaderFilterを知っていますが、これは帯域幅を節約するだけなので、必要なものではありません。

公開されたエンティティのバージョンにETagヘッダーを関連付けるSpring MVCのプロダクション対応ソリューションはありますか?

+4

良い記事http://www.infoq.com/articles/etagsが見つかりました。これは私が必要としているものと同じですが、やるべき作業がまだ必要です。 – mavarazy

+1

こんにちはmavarazyあなたはhttps://github.com/patrickvankann/spring-conditional-responseを見たことがありますか? –

+0

いいえ私はリンクのおかげで、ありがとう – mavarazy

答えて

6

spring-data-restは、このアウトオブザボックスをサポートしています。the conditional request part of the reference documentationを参照してください。

コントローラメソッド-から返されたResponseEntityタイプの条件付き要求をサポートするSpring Framework 4.2.0+を使用することもできます。

のようなもの:あなたはあなたのケースでは、バージョン番号になりますカスタムのetagsをチェックするServletWebRequest.checkNotModifiedコールを使用することができます

@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); 
} 
0

。これは、コンテンツの変更によってバージョン番号が変更された場合にのみ有効です。

詳細here

関連する問題