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
我在 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