2017-09-01 21 views

回答

1

这一切都取决于执行裹成结构的背景下:)

如果你所服务的数据作为JSON(和假设你是通过“运动衫”标签),我建议你发送的对象(报告行)分页功能。

{ 
    "current-page" : (num), 
    "max-pages" : (numOfAllPages), 
    "rows" : [{ 
     {(row1)}, {(row2)}, {(row...n)}, 
    }] 
} 

和您的REST处理程序接受查询参数,如:网页=(NUM)

除非,你需要一次发送的所有行。如果你这样做 - 我建议直接写入?响应流,为用户设置正确的响应头以触发“下载”操作。

+1

还要确保在服务器上启用gzip –

+0

有几个我们可以使用的头文件 - 这又取决于人们如何解决问题。 在下载大包的情况下,它是有用的使用: - 内容传输:gzip,deflate(阅读该解决方案的优点和缺点!!) - content-transfer:chunked - accept-ranges:bytes –

1

有几个解决方案 首先是分页作为Miron指出。

第二个Chunky输出 您使用ChunkyOutput类发送它。在这个客户端还需要消耗为ChunkyInput

@Path("/chunkyresource") 
public class ResourceSentAsChunks { 
    @GET 
    public ChunkedOutput<String> chunkedGet() { 
     System.out.println("ResourceSentAsChunks.chunkedGet()"); 
     final ChunkedOutput<String> output = new ChunkedOutput<String>(String.class); 

     new Thread() { 
      @Override 
      public void run() { 
       try { 
        for (int i = 0; i < 100000; i++) { 
         output.write(i + " "); 
        } 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } finally { 
        try { 
         output.close(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 
     }.start(); 
     return output; 
    } 

三使用压缩,如果你可以作为附件发送,或者如果你有自己的客户端应用程序你的回应。这种技术相当广泛地用于图像的情况。

相关问题