0

我想在每个响应中添加 etag 属性。我已在响应中添加了可变标头和缓存控制标头(max-age=600,公共),但我没有找到任何解决方案来添加 etag 作为响应。任何人都可以帮助我吗?

4

1 回答 1

0

ETag 标头只是一个附加标头,就像您已经添加的缓存控制标头一样。查看以下用于在 JAX-RS 资源中生成 ETag 标头的示例代码:

@GET
@Path("/yourResource/{id}")
public Response getPerson(@PathParam("id") String name, @Context Request request){
    CacheControl cc = new CacheControl();
    cc.setMaxAge(86400);

    Response.ResponseBuilder rb = null;

    EntityTag etag = new EntityTag(someService.getById(id).hashCode()+"");

    responseBuilder = req.evaluatePreconditions(etag);

    if (responseBuilder != null) {
       return responseBuilder.cacheControl(cc).tag(etag).build();
    }

    responseBuilder = Response.ok(UserDatabase.getUserById(id)).cacheControl(cc).tag(etag);
    return responseBuilder .build();
}
于 2018-09-17T18:44:26.060 回答