Logic Apps中Until循环无法识别总页数值问题排查求助
Until循环未正确获取API返回总页数问题
问题详情
使用Until循环分页拉取数据时,循环始终默认以60作为总页数执行,而非API返回的实际总页数(示例JSON中为73)。当前流程逻辑:
- 循环内依次执行:HTTP请求 → 解析JSON(Parse_User_Data) → 递增IncrementPage变量(初始值1,每次循环+1)
- 循环终止条件设置为:
TotalPages == IncrementPage - 总页数提取表达式:
body('Parse_User_Data')?['meta']?['pagination']?['total_pages']
API返回的示例JSON:
{ "data": [ { "id": 11111, "display_name": "Tester", "title": "Mr" } ], "meta": { "pagination": { "total": 1089, "count": 15, "per_page": 15, "current_page": 1, "total_pages": 73, "links": { "next": "Test.com" } } } }
排查与修复方案
- 确认TotalPages变量的赋值时机
禁止提前将TotalPages硬编码为60,必须在第一次HTTP请求完成并解析JSON后,用提取表达式为其赋值。如果变量初始值是60且未被正确覆盖,循环会一直使用默认值。 - 校验JSON解析的输出结果
在Parse_User_Data动作后添加日志步骤,输出body('Parse_User_Data')?['meta']?['pagination']?['total_pages']的结果,确认是否能正确提取到73。如果表达式返回null或错误值,循环会 fallback 到变量默认值。 - 调整循环终止条件
当前TotalPages == IncrementPage的逻辑存在漏洞:若IncrementPage递增后超过TotalPages,循环可能无法终止。建议改为IncrementPage > TotalPages,当当前页码超过总页数时直接停止循环。 - 检查变量作用域
确保TotalPages和IncrementPage是全局变量,而非循环内的局部变量——局部变量会在每次循环重置,导致总页数无法被正确保留。 - 验证HTTP请求的分页参数
确认每次HTTP请求都正确携带了page=@{IncrementPage}参数,避免始终请求第一页数据,导致总页数提取逻辑未触发更新。
内容的提问来源于stack exchange,提问作者user19307825
相关产品推荐
相关产品推荐

