当前位置: 首页 > 知识库问答 >
问题:

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

元彦君
2023-03-14

我在节点中运行Express。js服务器,作为我的React前端应用程序的备份。

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

我不确定这是否是正确的方法,但我一直在考虑让backen获取有限的条目,以便只有这些数据才会显示在前端表中。

搜索时会出现问题-当用户想要搜索表中的数据时,我需要能够搜索所有条目,而不仅仅是加载到表中的数据。

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

如果我走对了方向,我想我可以实现REST API分页,就像https://refactoringfactory.wordpress.com/2012/09/08/pagination-in-node-js-and-express/.欢迎就如何实现分页提出其他建议。

我非常希望能对我所描述的方法提供一些意见,并为更智能的方法提供建议。

编辑:我对标题做了一些修改,加入了“无限滚动分页”。这就是我想要实现的。目前,我有一个页面分页设置点击,但想取代无限滚动分页这一点。

共有2个答案

胡俊贤
2023-03-14

对,你应该这么做

>

  • 分页:您可以通过在清单的restendpoint中公开2个参数来实现它

    • <代码>? p=

    搜索:通过在列表的restendpoint中公开1个参数来实现它

    • <代码>/?q=

    如果您想最小化流量,您还可以添加一个参数来显式选择要返回的字段,如下所示

    • <代码>/?f级=

    所有这些参数都应该被RESTfulAPI中的listendpoint接受

    示例:

    <代码>http://example.com/api/cars/?p=2

  • 海宁
    2023-03-14

    我一直在考虑让backen获取有限数量的条目,以便在前端表中只显示这些数据。

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

    搜索会出现问题——当用户想要搜索表中的数据时,我需要能够搜索所有条目,而不仅仅是加载到表中的数据。

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

    再次,你明白了。在客户端上进行小型过滤器/搜索对于有限数量的条目是可以的,但是如果您首先需要只检索与搜索条件匹配的项目,那么将该功能添加到您的REST API是正确的选择。

     类似资料:
    • 问题内容: 我想创建一个可以滚动但不显示滚动条的div。我已经找到了Webkit的解决方案(如下),但是如何在其他浏览器中实现呢? 我宁愿避免使用javascript插件。希望找到CSS或特定于供应商的解决方案。 问题答案: 您必须将可滚动div包裹在另一个div中,以隐藏滚动条。 。 顺便说一句:一个漂亮的jQuery小插件jScrollPane使用了相同的技术

    • 问题内容: 在Bing搜索引擎上搜索图像时,结果显示如下: http://www.bing.com/images/search?q=stack+overflow 请注意,如何保持滚动状态和滚动状态,并且没有“正常”分页。 我的问题是:他们如何做到这一点?我可以看到发生了一些Ajax / javascript事件,但是代码不容易阅读。我特别想知道他们如何知道用户查看端口内是否有“空框”。 问题答案:

    • 我有一个,其元素样式如下: 我需要允许滚动沿Y轴当它变得高于300px,这工作很好。但我需要将设置为滚动条本身。 我尝试使用这个元素样式: 当它隐藏滚动条时,它也不允许滚动。有没有一种方法可以在滚动条不可见的情况下滚动?

    • 我有一个要求,我需要展示一张长桌。它不需要一次全部显示,所以ajax加载它(加载前50条记录,然后每次用户滚动到/超过最后一行的第十行时再获取50行)。 但我不确定分页和无限滚动这两种方式中哪一种更好。我希望用户在返回页面时能够跳转到最后一个滚动到的点(通过后退按钮,当然;如果无论用户何时访问页面,我都可以这样做,那就更好了!)前面的行也可见。同时,为了提高性能,我希望将ajax调用的数量限制在尽

    • TL;DR:下面三个选项中,哪一个是使用Redis分页最有效的? 我正在实现一个网站,其中包含多个用户生成的帖子,这些帖子保存在关系数据库中,然后以散列的形式复制到Redis,其中包含像站点:{site_id}: post:{post_id}这样的键。 我想对Redis执行简单的分页查询,以便在Pinterest风格的界面中实现延迟加载分页(即用户向下滚动,我们向服务器发送一个Ajax请求,请求下

    • 问题内容: 我一直在寻找一种“灯箱”类型的解决方案,它允许这样做,但还没有找到(请提出建议,如果您知道的话)。 我尝试重新创建的行为就像单击图片时在Pinterest上看到的一样。叠加层是可滚动的( 因为整个叠加层像页面顶部的页面一样向上移动 ),但是叠加层 后面 的主体是固定的。 我试图仅使用CSS( _即使用覆盖整个页面和正文的覆盖层)_来创建它,但这并不能阻止其滚动。 如何防止正文/页面滚动