Azure Logic Apps 如何基于响应头值实现Until循环拉取Freshservice API数据
Azure Logic Apps 分页API循环拉取配置方案
响应头值的引用方法
HTTP动作执行后的所有响应头都会统一存放在该动作输出的headers属性下,你可以通过两种方式引用Link字段:
- 直接在动态内容面板中,展开对应HTTP动作的输出列表,在「标头」分类下找到
Link选项,点击即可直接插入到配置项中 - 手动写表达式引用,格式为:
actions('<你配置的HTTP动作的自定义名称>').outputs.headers['Link'],如果是触发器返回的响应头,把actions换成trigger即可。
循环拉取全量分页的配置步骤
- 先运行一次首次HTTP请求,确认可以正常拿到返回数据和
Link响应头,后续流程基于该HTTP动作配置 - 初始化两个变量:1个数组类型变量
allResult用来存储全量返回数据,1个字符串类型变量nextPageLink,初始值赋值为首次请求返回的Link头值 - 添加「Do until」循环控件,设置终止条件为
empty(variables('nextPageLink')),即下一页链接为空时停止循环 - 在循环内部新增HTTP请求动作,请求URI直接填入
nextPageLink变量 - 在该HTTP动作后追加两个操作:首先将当前请求返回的JSON数据追加到
allResult数组中,其次更新nextPageLink变量的值为当前请求返回的Link头值,如果当前请求没有返回Link头,变量会自动被赋值为空,触发循环终止。
特殊场景处理
如果你的Freshservice返回的Link头是带格式的完整字符串(示例:<https://xxx.freshservice.com/api/v2/xxx?page=3>; rel="next"),需要先提取出其中的请求地址再赋值给下一页变量,你可以用下方表达式处理:replace(first(split(actions('<当前HTTP动作名称>').outputs.headers['Link'], '>')), '<', '')
内容的提问来源于stack exchange,提问作者Stephen Pefanis
相关产品推荐
相关产品推荐

