0

Jersey を使用して RESTful API を作成するアプリケーションを保守しています。

それらすべてに応答ヘッダーを設定して、キャッシュをオフにしたいと考えています。

私はすべてを置き換えるブルートフォースによってこれを行うことができます

Response.ok().build()

Response.ok().cacheControl(noCache).build()

は、noCache以前に次のように定義されています。

CacheControl noCache = new CacheControl();
noCache.setNoCache(true);

(そして、私が構築する他のすべての Response オブジェクトに匹敵する変更を加えます)しかし、戻り値がある100以上のすべての場所でこの変更を加えるのは、不器用なようです。私が生成するすべての応答に対して優先順位を設定する簡単な方法はありますか?

4

2 に答える 2

2

ジャージーにそれを行うための魔法の設定がない限り、私が考えることができる1つの方法は、AspectJのようなAOPライブラリを使用することです。build()メソッドの呼び出しをキャプチャし、前にcacheControlを実行します。

しかし、これが日食を行うことと比較して努力する価値があるかどうかは、「このメソッドのすべての呼び出し元を検索し、他のものに置き換える」ことには疑問があります。

DRY(Do-not Repeat Yourself)の原則に従ったさらに優れたプログラミングスタイルは、応答の構築方法を抽象化して一元化することです。これにより、応答を変更する必要がある場合は、複数ではなく1つの場所で変更するだけで済みます。ここでサービスパターンを適用できるかもしれません(例:ResponseBuilderServiceを作成します)。

于 2012-12-19T23:30:03.837 に答える
2

これを処理する適切な場所は Web コンテナーです。どれを使用していますか (Jetty/Tomcat/Grizzly/etc.) ?

于 2012-12-20T16:17:02.193 に答える