REST API:在GUI中无限滚动分页,但允许search所有条目
我有Express运行在一个Node.js服务器,作为我的React前端应用程序的支持。
前端应用程序通过REST调用从后端(存储在Mongo中)获取数据,并将这些数据显示在表中。 数据量一天增长,所以我应该考虑减less传输到前端应用程序的数据量,以免在后端造成不必要的压力。
我不知道这是否是正确的方法,但我一直在考虑让backen获取有限的条目,以便只有这些数据才会显示在前端表中。
问题出现在search中 – 当用户想要search表中的数据时,我需要能够search所有条目,而不仅仅是加载到表中的数据。
我想一个select是让searchfunction实际查询REST API,而不是search表本身。
如果我在正确的轨道上,我想我可以实现REST API分页,在https://refactoringfactory.wordpress.com/2012/09/08/pagination-in-node-js-and-表示/ 。 其他build议如何实施分页是受欢迎的。
我非常喜欢我所描述的方法的一些input,并提出更聪明的方法来实现这一点。
编辑:我改变了标题有些包括“无限滚动分页”。 这是我正在寻求实施。 目前我点击页面分页设置,但是想replace为无限滚动分页。
我一直在想我会考虑让backen获取有限的条目,这样只有这些数据才会显示在前端表中。
根据我的经验,这是常见的做法。 这个词是“分页”。 看看这个关于REST API分页最佳实践的 SO问题: API分页最佳实践 。
问题出现在search中 – 当用户想要search表中的数据时,我需要能够search所有条目,而不仅仅是加载到表中的数据。
我想一个select是让searchfunction实际查询REST API,而不是search表本身。
再次,你明白了。 在客户端上执行小型filter/search对于有限数量的条目是适用的,但是如果您只需要首先检索符合search条件的项目,那么将该function添加到REST API是正确的select。
对,你应该这样做
-
分页:您可以通过在列表的其余端点中暴露两个参数来实现它
-
?p=<number>
:页码,默认为1 -
?l=<number>
:每页/页面长度的项目数量,默认为10到100之间的数字
-
-
search:通过在列表的剩余端点中暴露1个参数来实现它
-
/?q=<string>
:你可以定义成你想要的,也许是一个与数据的一个或多个字段匹配的string
-
如果你想最小化networkingstream量,你也可以添加一个参数来明确地select你想返回的字段,就像这样
-
/?f=<string>
:string可以是id,name,age
等字符,所以api只能返回每个logging的这三个字段。
所有这些参数都应该被RESTful
API中的list
端点所接受
例:
http://example.com/api/cars/?p=2&l=15&q=toyota&f=id,brand,model,color