SuperAPI AI 工具集

api-pagination

编程与开发

查看项目

更新于 10-15 12:17

技能介绍

用途

API Pagination 用于为大型数据集实现可扩展的分页策略,帮助开发者在返回资源集合时进行高效查询、导航和性能优化。它适合以下场景:返回大量资源集合、实现搜索结果分页、构建无限滚动界面、优化大数据集查询、管理客户端应用内存,以及改善 API 响应时间。

主要能力

该技能提供三种核心分页策略的实现指导:

  • Offset/Limit 分页:通过页码和每页数量计算偏移量进行分页,示例中包含总数统计和总页数计算。
  • Cursor-Based(游标)分页:适合大型数据集的分页方式。
  • Keyset 分页:适合极大数据集的分页方式。

此外还涵盖搜索分页、分页响应格式,以及 Python(SQLAlchemy)分页实现。详细实现位于 references/ 目录下的参考指南中。

使用方式

资料提供了一个 Node.js 的 offset/limit 最小可运行示例:

// Node.js offset/limit implementation
app.get('/api/users', async (req, res) => {
  const page = parseInt(req.query.page) || 1;
  const limit = Math.min(parseInt(req.query.limit) || 20, 100); // Max 100
  const offset = (page - 1) * limit;

  try {
    const [users, total] = await Promise.all([
      User.find()
        .skip(offset)
        .limit(limit)
        .select('id email firstName lastName createdAt'),
      User.countDocuments()
    ]);

    const totalPages = Math.ceil(total / limit);

    res.json({
      data: users,
      pagination: {
        page,
        limit,
        total,
        totalPages,
        hasNext: page < totalPages,
// ... (see reference guides for full implementation)

完整实现需参考 references/ 目录下的对应指南。

参考指南

references/ 目录包含以下详细实现:

指南 内容
Offset/Limit Pagination Offset/Limit 分页
Cursor-Based Pagination 游标分页
Keyset Pagination Keyset 分页
Search Pagination 搜索分页
Pagination Response Formats 分页响应格式
Python Pagination (SQLAlchemy) Python 分页(SQLAlchemy)

最佳实践

建议做法(DO):

  • 对大型数据集使用游标分页
  • 设置合理的最大限制(例如 100)
  • 在可行时包含总数
  • 提供导航链接
  • 记录分页策略
  • 对排序字段使用索引
  • 适当缓存分页结果
  • 处理边界情况(空结果)
  • 实现一致的分页格式
  • 对极大数据集使用 keyset

避免做法(DON'T):

  • 对数十亿行使用 offset
  • 允许无限制的页大小
  • 每次请求都统计行数
  • 无排序进行分页
  • 分页中途更改排序顺序
  • 无游标进行深度分页
  • 对大型数据集跳过分页
  • 直接暴露数据库分页
  • 混用分页策略
  • 忽视性能影响

限制

资料未提供关于收费、价格、支持平台或具体性能指标的说明。