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