使用策略进行数据转换

已完成

策略模板可用于转换数据结构。 本流程常用于简化创建者在使用自定义连接器向操作提供数据,或处理来自操作结果的响应数据的任务。 例如,API 可能会提供具有记录访问权限,且用逗号分隔的用户列表。 将列表转换为数组更易于在应用或流中使用该列表。 目前,支持转换数据结构的策略模板有:

  • 将数组转换为对象

  • 将对象转换为数组

  • 将带分隔符的字符串转换为对象数组

每个策略均可根据一个或多个操作的请求(输入数据)或响应(输出数据)来运行。 您在根据请求运行策略时,其实就是在塑造由创建者提供的数据,以确定 API 所偏好的数据查看方式。 例如,Microsoft Planner 连接器在其更新任务详情操作中会使用转换数组来获得对象。 用户通过本操作可提供一个外部参考链接数组,并将其与任务相关联。 通过允许创建者将其指定为数组,用户获得了一个易用界面,该界面支持其选择添加新项目,以添加多个链接。

如果在操作步骤使用速览功能,则可以查看数据的结构,并了解不使用连接器上的策略模板进行转换时,这些数据在 API 上的呈现方式。

如果查看本操作的 Microsoft Planner API 文档,注意其所希望的数据结构如下。

要将流操作所提供的内容转换为 API 所期望的内容,连接器被配置成了多个策略模板以转换数据。 策略模板的使用方式如下:

  • 设置属性 - 用于将 previewPriority 字段设置为 !

  • 设置属性 - 用于设置 @odata.type 表达式

  • 将数组转换为对象 - 用于重塑数组,添加类型和别名属性

将数组转换为对象策略与以下示例类似。

利用对响应运行的策略模板,您可以重塑 API 的输出。 例如,获取发票操作的 Contoso 开票响应包含作为发票对象的一部分输出的用分号分隔的标记列表。 从 API 返回的数据应类似以下屏幕截图。

对于应用和流来说,带有多个值的字符串比数组更难处理。 要提高实用性,您可针对响应使用转换带分隔符的字符串策略模板。 以下示例展示了要配置的策略模板。

执行本操作后,名为 taglist 的新数组将会添加到响应中,如下图所示。

现在,您已了解了一些在用的策略模板示例,可以查看一些关键的配置详情了。 参数的运行策略决定了该策略是否适用于相应请求或响应。 如果两者都需要,则需配置两个策略模板。

每个转换策略模板都有一个目标对象或集合参数。 本系数给出了策略逻辑获取待转换数据的起始点。 最常见的起始点是使用指向请求或响应正文的 @body() 表达式。 在以下示例中,@body () 表达式是一个对象,并且有一个名为标记的属性。

或者,如果响应是一个具有 invoices 属性的对象,该属性是一个发票对象的数组,每个对象都有一个 tags 属性,则其配置将类似于下图。

您在配置策略时,需确保仅对具有与这些配置相匹配的请求/响应数据的操作应用这些策略。 例如,会返回单个发票对象的获取发票操作需要应用与列表发票操作不同且会返回发票对象数组的策略模板。 如果您在启用所有操作的情况下向现有连接器添加策略模板,请确保对所有操作和触发器进行测试,以确保其适用于新的策略。

配置好响应策略模板后,请确保重新导入有关操作响应的示例数据。 必须执行本步骤,以便应用和流可以显示已转换的数据。

如果您在配置策略模板时出现错误,测试器中一般会显示 HTTP 状态为 500 或无法执行任何处理。 尽管无法禁用策略,但您可以从操作列表中删除操作,以便在策略出现问题时,测试过程中可以将其隔离。 以下图像仅显示所选的两个操作。

转换策略模板提供了一种以配置为中心的方法将数据与基础 API 之间来回转换。 有了这些模板,您可以更加轻松地执行连接器操作。