我想将CacheControl信息添加到使用json绑定的GET服务。 我发现要将cacheControl添加到响应中,REST服务的声音如下:
@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()
}
但我有一个生成json消息的REST服务,而jersey库自动将java对象从java转换为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服务的响应中?我是否需要使用过滤器并在泽西创建响应后附加缓存控件? 谢谢万 弗拉维奥
答案 0 :(得分:2)
您仍然需要返回一个Response对象。
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()
}
Jersey的拦截器会自动将您的类转换为JSON对象。