2017-07-10 40 views
2

我使用dropwizard,并希望从我的服务器压缩结果返回。我该怎么做?Dropwizard:返回压缩结果

我有以下代码:

@GET 
@Timed 
@UnitOfWork 
public EntityResponse getOutput(@QueryParam(value = "encode") String encode,@Context HttpServletResponse response) { 
    response.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON); 
    if (StringUtils.isNotEmpty(encode)) { 
     response.setHeader(HttpHeaders.CONTENT_ENCODING, "gzip"); 
    } 
    return EntityResponse.success("result string"); 
} 

我使用一些其他的客户,当我测试这个终点我看到NO CONTENTencode参数不为空。也许我错误地回复了回复,可以帮助我吗?

编辑: 我试图做的请求,由于浏览器和接收This site can’t be reached ... might be temporarily down or it may have moved permanently to a new web address. ERR_CONTENT_DECODING_FAILED

回答

1

你不需要手动执行此操作。只需在Dropwizard Yaml中启用gzip comrpession并使用它即可。如果启用,所有在其Accept-Content-Encoding标头中使用gzip的请求将自动使用gzip编码响应实体。请参阅http://www.dropwizard.io/0.9.1/docs/manual/configuration.html#gzip

此外,您不必手动设置内容编码头。只需添加@Produces(MediaType.APPLICATION_JSON)作为您的方法的注释。

您现在可以删除您的方法中将处理标题和编码的所有逻辑和参数。

代码:

@GET 
@Timed 
@UnitOfWork 
@Produces(MediaType.APPLICATION_JSON) 
public EntityResponse getOutput() { 
    return EntityResponse.success("result string"); 
} 

YAML(最低配置):

server: 
    gzip: 
    bufferSize: 8KiB 
+0

我知道这个方法,但我不需要,如果大小超过'minimumEntitySize'和'压缩响应endode的url参数在任何情况下都是false。 –