我正在使用复制活动通过 Azure 数据工厂调用 REST API 端点。对于未找到数据的有效查询,API 返回 404 - 未找到。无论这是否是适当的响应(我无法控制 API),有没有办法在 ADF 中访问 API 状态代码(即不是 Azure 错误代码?)?
我希望管道在返回 404 未找到时返回“成功”,但在发生其他错误时仍然失败。我已经设置了“失败”错误处理活动,但由于没有数据,我陷入了如何区分“有效”错误和 404 错误的困境。
错误消息字符串包含状态代码(和响应),这就是我想要的。理想情况下,我想在不进行字符串比较的情况下与这些进行比较,特别是看到消息似乎是使用我所追求的确切响应字段构建的。
404 仅出现在某些查询参数中,并且通过 Postman 得到的响应是相同的,因此我相对有信心这是 API 的预期响应。
基于 Azure 数据工厂 - 获取 Web 活动输出的 HTTP 状态 我不确定这是否可以准确完成,但我想我会 (a) 检查 & (b) 看看是否有人可以提出更好的建议接近。
由于您的错误消息提供了所需的信息,请检查错误消息是否为404错误。如果是
404
,则管道成功,否则管道失败。
为此,请对 ADF 活动使用 Try Catch 块。
复制活动失败后,创建一个字符串类型设置变量活动并使用以下表达式。
@activity('Copy data1').output.errors[0].message
复制活动的错误消息将存储在该变量中。使用 if 活动并使用下面的表达式检查
status code 404 NotFound
是否存在于此。
@contains(variables('msg'),'status code 404 NotFound')
如果是
true
,则管道运行应该成功。因此,请在 if 活动的 True 活动 中添加一组变量活动以清除管道运行,或将 True 活动保留为空。
如果不是
404
错误,那么我们需要使管道运行失败。因此,在 if 活动的 False 活动 中使用 Fail 活动,并给出如下错误消息和错误代码。
@activity('Copy data1').output.errors[0].Code
如果复制活动因其他错误而失败,失败活动将使管道运行失败,并显示复制活动错误代码和错误消息。
如果复制活动失败并出现
404
错误,则管道运行将成功。
如果您还想处理复制活动的成功,请查看此文档以了解错误处理方法。