如何限制Workday自定义报表REST API响应大小或实现分页?
Workday自定义报表API响应大小超限的解决办法
首先明确:脚本限制响应大小无法解决这个问题,因为「Maximum response size reached」是Workday服务端因返回数据量超出阈值主动抛出的错误,客户端脚本无法在服务端返回数据前限制响应体积。而分页机制是官方支持的可靠解决方案,具体实现如下:
分页参数说明
Workday自定义报表API支持通过page(页码,从1开始)和pagesize(每页数据条数,最大可设为1000,默认100)参数实现分页。
具体操作步骤
构造分页请求URL
在原API地址基础上添加分页参数,示例:https://wd3-impl-services1.workday.com/ccx/service/customreport2/<Tenant_name>/<report_name>?format=json&page=1&pagesize=500替换
<Tenant_name>和<report_name>为实际值,pagesize可根据需求调整(不超过1000)。获取总数据量
先调用一次分页请求(比如page=1&pagesize=1),从响应体中提取totalResults字段(Workday会返回总数据条数),以此计算总页数:总页数 = 向上取整(总数据条数 / 每页条数)。Postman中实现自动分页
利用Postman的环境变量和Test脚本实现自动遍历所有页面:- 先设置两个环境变量:
currentPage(初始值1)、pageSize(比如500)。 - 请求URL改为引用变量:
https://wd3-impl-services1.workday.com/ccx/service/customreport2/<Tenant_name>/<report_name>?format=json&page={{currentPage}}&pagesize={{pageSize}} - 添加Test脚本自动更新页码:
const currentPage = parseInt(pm.environment.get("currentPage")); const pageSize = parseInt(pm.environment.get("pageSize")); const totalResults = pm.response.json().totalResults; const totalPages = Math.ceil(totalResults / pageSize); if (currentPage < totalPages) { pm.environment.set("currentPage", currentPage + 1); } - 使用Collection Runner运行该请求,设置循环次数为总页数,即可自动获取所有分页数据。
- 先设置两个环境变量:
注意事项
pagesize最大值为1000,超过会被Workday自动调整为默认值。- 若响应体中未找到
totalResults,可检查报表配置是否开启了返回统计信息,或在响应头中查找相关字段。
内容的提问来源于stack exchange,提问作者Karthik
相关产品推荐
相关产品推荐

