2017-07-10 92 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。 –