Azure Logic App返回500等非200状态码时如何获取响应体
Azure Logic App 非2xx状态码下获取响应体方案
可以正常获取非200状态码对应的响应体,这不是产品的设计限制,仅为默认配置的默认行为,具体操作方法如下:
核心根因
默认情况下,Logic App 中的HTTP类动作/触发器会将状态码不在200-299区间的请求判定为失败,直接中断默认执行链路,也不会解析传递响应体,所以你会拿到null值。
方案1:修改成功状态码范围(最常用)
直接调整HTTP动作的状态码判定规则,放行你需要获取响应体的异常状态码即可:
- 点击对应HTTP动作右上角的「···」按钮,选择「设置」
- 下拉找到成功状态码配置项,默认值为
200-299,你可以根据需求修改:- 需要放行所有状态码的场景直接改为
200-599 - 仅需要放行特定异常码的场景可单独指定,比如
200,500,504
- 需要放行所有状态码的场景直接改为
- 保存配置后,所有在配置范围内的状态码都会被判定为可处理的请求,你可以通过
outputs('你的HTTP动作名称')?['body']正常获取响应体,通过outputs('你的HTTP动作名称')?['statusCode']获取状态码,后续再根据状态码做分支处理即可。
如果你是用Logic App对外提供接口,返回自定义500/504时出现响应体丢失,需要检查「响应」动作的触发条件,不要将其仅设置为失败场景触发,改为无论成功/失败都运行,即可正常返回自定义的响应体内容。
方案2:错误分支捕获(不修改默认判定规则)
如果你不想改动默认的2xx成功判定逻辑,也可以通过错误分支捕获的方式获取异常响应:
- 给HTTP动作新增一个并行处理分支,设置分支的
run after触发条件为「失败」「超时」「已跳过」所有异常场景 - 在错误分支中使用
actions('你的HTTP动作名称')?['outputs']?['body']即可获取失败请求的响应体,状态码可通过actions('你的HTTP动作名称')?['outputs']?['statusCode']获取
内容的提问来源于stack exchange,提问作者Kruti Joshi
相关产品推荐
相关产品推荐

