使用 Azure 数据工厂复制活动(或类似活动)访问 REST API 状态代码?

问题描述 投票:0回答:1

我正在使用复制活动通过 Azure 数据工厂调用 REST API 端点。对于未找到数据的有效查询,API 返回 404 - 未找到。无论这是否是适当的响应(我无法控制 API),有没有办法在 ADF 中访问 API 状态代码(即不是 Azure 错误代码?)?

我希望管道在返回 404 未找到时返回“成功”,但在发生其他错误时仍然失败。我已经设置了“失败”错误处理活动,但由于没有数据,我陷入了如何区分“有效”错误和 404 错误的困境。

Activity output

错误消息字符串包含状态代码(和响应),这就是我想要的。理想情况下,我想在不进行字符串比较的情况下与这些进行比较,特别是看到消息似乎是使用我所追求的确切响应字段构建的。

404 仅出现在某些查询参数中,并且通过 Postman 得到的响应是相同的,因此我相对有信心这是 API 的预期响应。

基于 Azure 数据工厂 - 获取 Web 活动输出的 HTTP 状态 我不确定这是否可以准确完成,但我想我会 (a) 检查 & (b) 看看是否有人可以提出更好的建议接近。

rest azure-data-factory
1个回答
0
投票

由于您的错误消息提供了所需的信息,请检查错误消息是否为404错误。如果是

404
,则管道成功,否则管道失败。

为此,请对 ADF 活动使用 Try Catch 块

复制活动失败后,创建一个字符串类型设置变量活动并使用以下表达式。

@activity('Copy data1').output.errors[0].message

enter image description here

复制活动的错误消息将存储在该变量中。使用 if 活动并使用下面的表达式检查

status code 404 NotFound
是否存在于此。

@contains(variables('msg'),'status code 404 NotFound')

enter image description here

如果是

true
,则管道运行应该成功。因此,请在 if 活动的 True 活动 中添加一组变量活动以清除管道运行,或将 True 活动保留为空。

enter image description here

如果不是

404
错误,那么我们需要使管道运行失败。因此,在 if 活动的 False 活动 中使用 Fail 活动,并给出如下错误消息和错误代码。

@activity('Copy data1').output.errors[0].Code

enter image description here

如果复制活动因其他错误而失败,失败活动将使管道运行失败,并显示复制活动错误代码和错误消息。

如果复制活动失败并出现

404
错误,则管道运行将成功。

enter image description here

如果您还想处理复制活动的成功,请查看此文档以了解错误处理方法。

© www.soinside.com 2019 - 2024. All rights reserved.