概括 REST API 的分页技术

Posted

技术标签:

【中文标题】概括 REST API 的分页技术【英文标题】:Generalizing the pagination technique for REST APIs 【发布时间】:2015-11-17 10:27:11 【问题描述】:

我正在尝试从任何公共 REST API 获取响应并对其进行处理(解析并放入数据结构)。在从 API 获得此响应时,我想使用一些分页功能。我提到了this,这个问题讨论了特定 API 的分页技术。

我想要实现的是使分页代码sn-p通用即

    我无法控制服务器端分页 在运行时,我不知道该 API 提供的分页查询参数

我想知道是否有任何方法可以进行“仅客户端”分页,即限制来自服务器的响应、处理它并获取剩余的响应等等。

我在分页方面工作不多,所以任何想法、建议和指针都表示赞赏。

谢谢!

【问题讨论】:

您可以编写自己的服务器 api 以从该 api 中获取所有内容并自己提供分页结果。 我包含分页的目的是我正在处理的 api 可以返回给我一个巨大的响应,比如 json 记录的 lacs。那么这种方法会帮助我处理 outofMemory 问题吗? 在运行时我不知道该 API 提供的分页查询参数,那么您如何从 REST api 访问分页? @NamanGala 这就是问题所在,我无法执行分页,并且出现 outOfMemory 错误 @Vaishnavee ,是的,它会处理它。一次将巨大的响应存储在您的后端,并以分页方式提供给您的客户端实现。 【参考方案1】:

客户端分页不是一个好主意,因为通常客户端是轻量级的(低内存和处理能力)。正如您所提到的,您无法控制服务器或 REST 服务不提供任何分页参数,那么我可以想到以下两种选择:

    您可以在资源充足的服务器上为 REST 服务引入代理服务。此代理将使用原始响应,并可以根据您的需要提供分页响应。

    如果您的客户端可以使用整个结果并且有足够的内存来保存它,那么您可以实现自己的客户端逻辑进行分页。

我更喜欢第一个。 希望对您有所帮助。

【讨论】:

感谢您的回复,代理服务会帮助解决内存不足的问题吗?因为反响非常大。 @Vaishnavee 代理是指具有足够资源的新服务器,托管运行在其上的自定义休息代理服务。代理将向您的客户端提供分页响应,因此客户端不应崩溃。 哦,我想这是这里最好的选择,我会试试这个:) @Vaishnavee 祝你好运...让论坛知道你的进展。

以上是关于概括 REST API 的分页技术的主要内容,如果未能解决你的问题,请参考以下文章

REST Web 应用程序中的分页

DRF的分页

如何在 django rest 框架的分页 URL 中更改下一个键中的主机?

Ext JS 4.2 中的分页内存代理等效技术是啥

分页技术框架(Pager-taglib)学习一(页面分页)

MySQL的分页技术总结