SuperAPI AI 工具集

pagination

编程与开发

查看项目

更新于 10-15 20:30

技能介绍

用途:为返回大量数据的 API 列表端点实现分页,适用于无限滚动界面、数据导出,以及任何可能返回 100 条以上记录的端点。

主要能力:对比两种分页策略。偏移分页(如 GET /users?page=2&limit=20)简单、支持跳页,但大数据集慢且并发写入时不一致;游标分页(如 GET /users?cursor=eyJpZCI6MTIzfQ&limit=20)快、一致、适合实时数据,但不支持跳页、实现稍复杂。提供 TypeScript 与 Python 的游标分页实现,含 encodeCursor/decodeCursor、paginate 函数、Express 与 FastAPI 路由示例,以及统一响应格式(data 加 pagination,含 hasMore、nextCursor、prevCursor、可选 total)。

使用方式:以 createdAt 与 id 组合做稳定排序,游标编码排序键;查询时多取一条判断 hasMore;支持 forward/backward 方向。数据库需为排序列建索引,例如 CREATE INDEX idx_users_pagination ON users(created_at DESC, id DESC); 过滤分页可建组合索引。前端可用 useInfiniteQuery 配合 nextCursor 实现无限滚动。

限制与注意:大数据表避免用 OFFSET;游标必须包含 ID 以处理时间戳相同的情况;排序列缺索引会变慢;限制最大页大小(如 100);谨慎返回 total,COUNT(*) 在大表上开销高;需处理分页间数据被删除的情况。