/ जर्सी और जोंस कार्यान्वयन के साथ HTTP कैशेकोन्ट्रोल - आराम, स्काला, जर्सी, कैश-कंट्रोल

जर्सी और जेसन कार्यान्वयन के साथ HTTP कैश नियंत्रण - आराम, स्कैला, जर्सी, कैश-नियंत्रण

मैं एक GET सेवा के लिए CacheControl इंटर्मेशन जोड़ना चाहता हूं जो कि json बाइंडिंग का उपयोग करता है। मैंने पाया कि इस तरह से REST सेवा ध्वनि की प्रतिक्रिया के लिए cacheControl को जोड़ना:

@GET
@Path("cacheheadertest")
@Produces({"*/*"})
def testcache():javax.ws.rs.core.Response {
val rb:Response.ResponseBuilder = javax.ws.rs.core.Response.ok("chached test message")
val cc = new CacheControl()
cc.setMaxAge(60)
cc.setNoCache(false)
rb.cacheControl(cc).build()

}

लेकिन मेरे पास एक REST सेवा है जो json संदेशों का उत्पादन करती है और जर्सी लाइब्रेरी स्वचालित रूप से जावा ऑब्जेक्ट को जावा से xml / json में बदल देती है।

@GET
@Path("jsontestcache")
@Produces(Array(MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML))
def myjsontestservice(@HeaderParam("X-TOKENID") tokenId: String,
@QueryParam("clientId") clientId: String):com.test.MyResultClass = {
val response= new com.test.MyResultClass
[...]

response
}

मैं myjsontestservice सेवा की प्रतिक्रिया में कैश नियंत्रण कैसे जोड़ सकता हूं? क्या जर्सी के द्वारा प्रतिक्रिया तैयार करने के बाद मुझे एक फिल्टर का उपयोग करने और कैशकंट्रोल को जोड़ने की आवश्यकता है? धन्यवाद लाख फ्लावियो

उत्तर:

जवाब के लिए 2 № 1

आपको अभी भी एक रिस्पांस ऑब्जेक्ट वापस करने की आवश्यकता होगी।

def somejson() : Response = {
val builder = Response.ok(new com.test.MyResultClass);
val cc = new CacheControl()
cc.setMaxAge(60)
cc.setNoCache(false)
builder.cacheControl(cc).build()
}

जर्सी के इंटरसेप्टर स्वचालित रूप से आपकी कक्षा को JSON ऑब्जेक्ट में बदल देंगे।