REST API:GUI 中的无限滚动分页,但允许搜索所有条目

REST API: Infinite scroll pagination in the GUI, but allow searching through all entries

我在 Node.js 服务器中安装了 Express 运行,它作为我的 React 前端应用程序的后端。

前端应用程序通过 REST 调用从后端(存储在 Mongo 中)获取数据,并在 table 中显示此数据。 数据量每天都在增长,所以我应该考虑减少传输到前端应用程序的数据量,以避免对后端造成不必要的压力。

我不确定这是否是解决此问题的正确方法,但我一直在考虑让后端获取有限数量的条目,以便只有这些数据会显示在前端 table。

搜索时出现问题 - 当用户想要搜索 table 中的数据时,我需要能够搜索所有条目,而不仅仅是加载到 [=33] 中的数据=].

我想一个选择是让搜索功能实际查询 REST API,而不是搜索 table 本身。

如果我走在正确的轨道上,我想我可以实现 REST API 分页,在 https://refactoringfactory.wordpress.com/2012/09/08/pagination-in-node-js-and-express/ 中找到的示例的某处。欢迎提供有关如何实现分页的其他建议。

我非常希望就我所描述的方法提供一些意见,以及有关更明智的实施方法的建议。

编辑:我稍微更改了标题以包含 "Infinite scroll pagination"。这就是我要实现的。目前我点击了页面分页设置,但想将其替换为无限滚动分页。

I've been thinking I would look into having the backen fetch a limited amount of entries, so that only these data will be displayed in the frontend table.

根据我的经验,这是常见的做法。它的术语是“分页”。看看这个关于 REST API 中分页最佳实践的问题:API pagination best practices.

The problem arises with searching - when the user wants to search the data in the table, I'll need to be able to search through all entries, not just the data loaded into the table.

I guess one option would be to have the search function actually query the REST API, instead of searching the table itself.

再一次,你明白了。在客户端上做小 filters/searches 对于有限数量的条目来说很好,但是如果您首先只需要检索匹配搜索条件的项目,那么将该功能添加到您的 REST API 是正确的选择.

对,你应该做

  • 分页:您可以通过在列表的其余端点公开 2 个参数来实现它

    • ?p=<number>:页码,默认为1
    • ?l=<number>:每页的项目数/页长,默认为10到100之间的数字
  • 搜索:通过在列表的其余端点公开 1 个参数来实现它

    • /?q=<string>:你可以定义成你想要的,可以是匹配数据的一个或多个字段的字符串

如果您想最大程度地减少网络流量,您还可以再添加一个参数来明确 select 您想要 return 编辑的字段,就像这样

  • /?f=<string>:字符串可能类似于 id,name,age,因此 api 应该 return 每个记录只有这三个字段。

您的 RESTful API

中的 list 端点应接受所有这些参数

示例:

http://example.com/api/cars/?p=2&l=15&q=toyota&f=id,brand,model,color