我正在调用Restful api,它返回超过10万条记录。如何在客户端处理大量数据?我不想立刻获得所有记录。
答案 0 :(得分:3)
如果您是restful API的所有者,请重新设计它以支持分页。并使用页码以较小的部分请求信息。
如果您不是API的所有者,则实现中介服务器端服务,该服务的工作方式类似于具有分页支持的缓存。客户端使用此中介服务,发送带页码的请求并获取较小的数据部分。
<强>更新强>
假设您的返回大量记录的服务被命名为&#34; Black Box Service&#34;。
我建议创建额外的服务(让它的名字是:&#34; Mediator servie&#34;)从客户端获取所有请求,通过向&#34; Black Box发送请求来处理它们Service&#34;,缓存结果并将信息返回给客户端。
检查下图:
假设介体服务地址为:http://www.yourserver.com/mediatorservice
然后,此中介服务的API应支持以下参数:
pageNumber
- 请求的页数
recordsPerPage
- 每页记录
并且对此中介服务的示例请求将如下所示:
http://www.yourserver.com/mediatorservice?pageNumber=1&recordsPerPage=25
此请求尝试从中介服务获取此页面上的25条记录(recordsPerPage = 25)的第一页(pageNumber = 1)。
Mediator服务有自己的数据库用于缓存目的。如果客户端请求范围内的记录:1 .. 100 000
,则中介服务请求来自&#34;黑匣子服务的第一大数据&#34;并将这段数据存储在自己的数据库中。
所有其他连续请求将使用中介服务数据库中的此缓存数据块提供。
如果范围100 001 ...200 000
中有请求,则中介服务会获取另一个巨大的数据块,并将其存储在自己的数据库中(如果之前没有这样做)。并使用此存储的数据来处理来自客户端的请求。
根据信息的性质,可能需要以不同方式处理缓存信息。有些信息可能会被缓存很长时间,有些则无法缓存。
存在许多缓存java框架,请检查它们以选择适合您需求的框架。