返回知识库

数据与服务 · 服务与数据

接口分页API Pagination

接口分页一次只回一页。写入频繁的列表用游标锚定,避免 OFFSET 窗口漂移。

先认出这屏信息流,再决定下一页怎么要

下面就是列表接口返回的第 2 页。默认用 after=103 锚定。插入新动态后再按页码切,#108 会重复出现在同一条信息流上。

信息流 · 第 2 页游标锚定 · 这一页没乱
GET /feed?after=103
  • #107补全单元测试
  • #106优化首页图片
  • #105接入消息队列
  • #104清理废弃接口
  • #103新增暗色主题

游标锚定 · 这一页没乱这一页的五条就钉在列表里。

原因:after=103 记住「从这条之后再取」,插入新动态也不挤乱这一页。下一步:试「插入后再用页码」,看重复行长在信息流上。

知识点:分页是约定,不是把表切成几截就完

信息流上的行已经演示了核心关系,这里只给可复用的命名。

  • 一次只回一页:pageSize 或 first,避免整表塞给前端。
  • 游标按 id 锚定:after=103 表示「这条之后」,插入不挤乱窗口。
  • OFFSET 按位置切:头顶插入一行,第 2 页就会重复或漏行。
  • 空页不是报错:末页没有 nextCursor,前端停即可。

什么时候用、怎么用

列表会增长、一次拿不全、还可能边翻边写入时,接口必须带分页约定。

  • 信号:信息流、订单列表、日志——数据多,还会有新行插到头顶。
  • 适用:稳定排序的大列表;写入频繁时优先游标。
  • 不适用:总共就几行的设置项;也不要用页码假装「第 2 页永远是这五条」。
  • 最短路径:定 pageSize → 回本页和下一个游标 → 翻页带上 after → 空页停止。

正反例:同一屏第 2 页,只换怎么指位置

目标都是看更早的五条动态,只改用页码还是用游标。

正例GET /feed?after=103

新动态插到头顶,这一页仍从 #107 数到 #103。

反例GET /feed?page=2

插入 #108 后窗口滑动,上一页见过的行又出现。重复写在信息流上。

快速自测

用户停在信息流第 2 页时,头顶插入了一条新动态。怎样翻页最不容易重复?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。