关于 api-pagination
用于实现分页策略的技能,帮助高效查询和浏览大型数据集。适合开发处理大量结果集的 API 和客户端界面的开发者。
主要功能
- 01偏移量/限制、游标和键集分页
- 02搜索结果分页
- 03响应格式指引
- 04性能与边界情况实践
适用场景
- 01为大型 API 集合分页
- 02构建搜索结果导航
- 03实现无限滚动界面
- 04降低查询和客户端内存开销
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill api-pagination安装后在 Claude Code 中输入/api-pagination确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/cursor-based-pagination.mdkeyset-pagination.mdoffsetlimit-pagination.mdpagination-response-formats.mdpython-pagination-sqlalchemy.mdsearch-pagination.mdscripts/validate-api.shtemplates/api-scaffold.yaml详细介绍
API 分页
目录
概述
实现可扩展的分页策略,以高效查询、浏览和优化大型数据集的性能。
适用场景
- 返回大量资源
- 实现搜索结果分页
- 构建无限滚动界面
- 优化大型数据集查询
- 管理客户端应用程序中的内存
- 缩短 API 响应时间
快速入门
最简可运行示例:
// 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/ 目录中的详细实现:
| 指南 | 内容 |
|---|---|
| 偏移量/限制分页 | 偏移量/限制分页 |
| 基于游标的分页 | 基于游标的分页 |
| 键集分页 | 键集分页 |
| 搜索分页 | 搜索分页 |
| 分页响应格式 | 分页响应格式 |
| Python 分页(SQLAlchemy) | Python 分页(SQLAlchemy) |
最佳实践
✅ 应该
- 对大型数据集使用游标分页
- 设置合理的最大限制(例如 100)
- 在可行时包含总数
- 提供导航链接
- 记录分页策略
- 使用索引字段进行排序
- 适时缓存分页结果
- 处理边缘情况(无结果)
- 实现一致的分页格式
- 对超大型数据集使用键集分页
❌ 不应该
- 对数十亿行数据使用偏移量分页
- 允许不受限制的页面大小
- 对每个请求都统计行数
- 不排序就进行分页
- 在分页过程中更改排序顺序
- 不使用游标进行深度分页
- 对大型数据集跳过分页
- 直接暴露数据库分页方式
- 混用分页策略
- 忽视性能影响
评论
支持 Markdown