Skip to main content
Version: 1.5.x

Gzip解压

Gzip是现在一种流行的文件压缩算法,有相当广泛的应用范围。尤其是当Gzip用来压缩存文本文件的时候效果尤为明显,大概能减少70%以上的文件大小(具体多少取决于文件中的内容)。

现有的很多HTTP服务器系统都支持Gzip,如Apache、PHP等,经过这些服务压缩过的数据可以降低网络传输的流量,提高客户端的响应速度。

@DecompressGzip 注解#

Forest从1.5.2-BETA版本开始支持Gzip的解压,其解压的方式也很简单,在方法或接口类上加上 @DecompressGzip 注解即可。

/** * 为请求方法添加Gzip解压能力 */@Get("/transaction")@DecompressGzipString transaction(String infno);

或者在接口上

/** * 在接口类上添加 DecompressGzip 注解, * 就是为该接口的所有方法增加Gzip解压的能力 */@BaseRequest(baseURL = "${baseUrl}")@DecompressGzippublic interface GzipClient2 {
    /**     * 进行Gzip解压     */    @Get("/transaction1")    String transaction1(String infno);
    /**     * 进行Gzip解压     */    @Get("/transaction2")    String transaction2(String infno);}

如果在一个Gzip解压的接口中,有一两个请求方法不需要Gzip,也一样可以通过 @DecompressGzip(false) 注解方式进行屏蔽,其中注解的value参数代表Gzip解压的开关,true 为打开,false为关闭。



/** * 在接口类上添加 DecompressGzip 注解, * 就是为该接口的所有方法增加Gzip解压的能力 */@BaseRequest(baseURL = "${baseUrl}")@DecompressGzippublic interface GzipClient2 {
    /**     * 进行Gzip解压     */    @Get("/transaction1")    String transaction1(String infno);
    /**     * 进行Gzip解压     */    @Get("/transaction2")    String transaction2(String infno);
    /**     * 该方法的@DecompressGzip(false)注解表示此请求不用进行Gzip解压     */    @Get("/none-gzip")    @DecompressGzip(false)    String noneGzip();
}