Postman新手如何翻页获取数据仓库API返回的全量分页记录
Postman 自动分页拉取全量API数据解决方案
方案1:优先尝试单请求拉取全量
- 先查看你API的query params列表里是否有
page_size/limit类的单页条数参数 - 直接将该参数值设置为500,发起请求即可一次性拿到全量数据,无需翻页,这是成本最低的方案
- 如果API限制了单页最大返回条数为10,再使用下面的自动翻页方案
方案2:Postman 内置功能实现自动翻页拉取
第一步:提前确认核心字段
先从你已有的返回结果里提取3个关键信息:
- 总记录数字段:通常命名为
total/total_count,用于判断是否已经拉取完全部数据 - 分页页码参数名:通常为
page/page_num,对应你API的query params里的分页入参 - 当前返回条数:若没有总条数字段,也可以通过当前页返回的数组长度判断,若长度小于10则说明到最后一页
第二步:配置环境变量
打开Postman环境变量面板,新增3个变量:
current_page:初始值设为1,用于记录当前请求的页码all_data:初始值设为[],用于存储所有页的返回数据is_finish:初始值设为false,用于标记是否拉取完成
第三步:添加前置请求脚本
打开你的API请求的「Pre-request Script」标签,粘贴以下代码:
// 把当前页码注入到请求参数中,这里的page替换成你实际的分页参数名 pm.request.url.query.add({ key: "page", value: pm.environment.get("current_page") }) // 单页条数固定设为10,page_size替换成你实际的单页条数参数名 pm.request.url.query.add({ key: "page_size", value: 10 })
第四步:添加后置处理脚本
打开API请求的「Tests」标签,粘贴以下代码:
// 先拿到当前页的返回数据,这里的data替换成你响应里实际的列表字段名 const currentPageData = pm.response.json().data const allData = JSON.parse(pm.environment.get("all_data")) // 把当前页数据拼到全量数据里 allData.push(...currentPageData) pm.environment.set("all_data", JSON.stringify(allData)) // 判断是否还要继续翻页,总条数500的话直接判断长度即可 if (allData.length < 500 && currentPageData.length === 10) { // 页码+1 pm.environment.set("current_page", Number(pm.environment.get("current_page")) + 1) // 这里替换成你当前这个API请求的名称,注意要完全一致 postman.setNextRequest("你的API请求名称") } else { // 拉取完成,打印全量数据到Postman控制台,可直接导出 console.log("全量数据拉取完成,共" + allData.length + "条", allData) pm.environment.set("is_finish", "true") }
第五步:运行
打开Postman的集合Runner,选择你的API所在的集合,运行即可自动完成翻页拉取,运行结束后在控制台就能拿到完整的500条数据。
方案3:手动翻页(临时应急用)
如果不想写代码,直接修改请求的query params里的分页参数即可:
- page=1 返回1-10条
- page=2 返回11-20条
- 依次修改到page=50就能拿到全部500条数据
注意事项
- 如果API有请求频率限制,可以在后置脚本里加延迟逻辑,比如添加
setTimeout(() => {}, 1000)实现每次请求间隔1秒,避免被限流 - 拉取完成后记得清空环境变量,避免影响后续请求
内容的提问来源于stack exchange,提问作者Diganth Sanghvi
相关产品推荐
相关产品推荐

