格式化 HTTP 连接器输出

Prev Next

了解如何构建 HTTP 连接器的输出。

概述

Tulip 中的连接器函数编辑器允许您对连接器函数返回的数据进行结构化处理,使其在您的应用程序中既实用又易于使用。本文将通过介绍以下内容,为您讲解连接器函数 Output 格式化的基础知识:

  • 连接器输出的概念
  • 可用于格式化输出的工具
  • 各种常见的输出格式

什么是输出?

输出用于定义和组织连接器函数的返回结果。通过输出,您可以从较大的 HTTP 返回正文中提取对应用程序重要的信息。

Testing Outputs.gif

如何组织输出

在连接器函数编辑器的左下角找到**“输出**”部分。

Outputs3.png

要开始添加输出,请点击**“添加函数输出**”。

建议为输出命名一个易于识别的标签。这些名称在应用中会显示为“变量”,因此能够区分它们非常重要。

Screenshot 2023-03-23 at 9.57.16 AM.png

为了理解 HTTP 请求的结果,首先必须了解**“测试结果**”中返回的对象结构。下图展示了结果如何被划分为“对象”和“数组”部分。

Object Anatomy Diagram.png

NOTE

If you haven’t worked with JSON before, you may be unfamiliar with two critical datatypes, objects and arrays. Arrays are lists of values of the same type. For example, [1,2,3,5], or [oak, elm, alder, hickory]. Values in arrays are contained within square brackets, [ ]. Objects are a datatype for holding key:value pairs. The key:value pairs within an object can be of multiple different types, including arrays and nested objects. Objects are contained with curly brackets, { }.

有关对象和数组的更多信息,请参阅《理解连接器函数输出中的数组和对象》。

点表示法

对于 HTTP 连接器,输出采用一种称为 的格式。点表示法允许您访问对象内的值。 点表示法对于从庞大的 JSON 响应正文中仅提取所需内容非常有用,并且它为您提供了更大的灵活性来格式化 HTTP 连接器函数。简而言之:这是一种基于相互嵌套的值的结构化格式。

让我们通过一个示例来详细说明点表示法在连接器输出中的使用方法。

下面的示例对象名为“employees”,其中包含一个对象数组,每个对象都包含每位员工的详细信息。如果我们只想获取每位员工的职位,则应使用以下语法:employees.title。我们使用点号来访问与我们感兴趣的键相关的值。 假设我们只想获取第一个结果。 我们可以通过在主对象名称“employees”与目标值“title”之间添加索引位置来指定这一点。语法如下:employees.0.title。对于更复杂的对象,您可能需要深入到对象内部才能提取所需的信息。

Outputs Ex2.png

让我们通过另一个示例进一步说明。假设我们要创建一个连接器函数,用于提取知识库中文章的相关信息。该连接器返回名为“data”的以下 JSON 对象,其中包含特定文章的数据:

Test Results Article Ex.png

如果我们只想提取ID、标题、版本以及文章是否被隐藏等信息,就需要通过输出参数来指定。下面演示一下点表示法在编辑器输出部分中的应用:

Outputs to Test Results Annotated.png

要提取“id”和“title”等结果,我们需要指定这些结果在 JSON 中的位置。输出主体为“data”,对应**“测试结果**”部分中的第一个下拉菜单。 “data”下拉菜单中的每个结果都嵌套在该对象内。在**“输出”**部分,句点(.)表示向“data”对象深入一层。

NOTE

It doesn’t matter whether the dot is placed in the body, or in front of individual properties, so long as there is a dot separating each layer of the JSON.

Outputs to Test Results2.png

当我们在**“测试结果**”部分点击**“输出”**选项卡时,系统会过滤掉其余数据,从而仅显示我们关注的信息。

另一种编写输出结果的方式是使用单行。这可以在一个查询中显示完整的路径。

Outputs Single Line.png

若想轻松编写输出路径,您还可以点击一行数据将其添加为新的输出项。

Create Output Path.gif

有关点表示法使用的更多信息,请参阅此资源:Processmaker:JSON 点表示法。

输出结果

输出结构的构建方式多种多样,但具体采用哪种方式完全取决于您希望在应用程序中如何处理这些数据。在开始构建输出结构之前,请先考虑您的最终目标。 您是想将多种数据类型分别显示在独立变量中?还是将相同类型的数据放在一个数组中,仅需从中解析出相关信息?

以下示例均基于同一个连接器函数,且每个示例中的测试结果主体内容相同。然而,输出结果会因结构方式的不同而有所差异。

下例展示了连接器如何输出 JSON 路径 data.hits.slug 的数据。根据该输出的结构,连接器会返回一个包含所有知识库文章 URL 短链接的大型数组。在我们的应用程序中,可以通过数组变量访问该连接器的返回值。

Output 3x540 v2.png

我们可以将输出结构化为对象列表,并从结果中提取单个数据类型,从而创建多个数据对象,这些对象可在应用程序中单独显示。

Output 540x3.png

对象列表是指内部包含多个嵌套数据类型的对象。要使用对象列表,请点击输出类型,然后切换右上角的“列表”开关。

Outputs Lists Toggle.gif

当您拥有一个对象列表时,便可以轻松地在应用程序中将不同数据类型作为独立的数据片段使用。

让我们回到上面的示例,将输出路径data.hits.slug设为列表。从下面的结果中可以看到,Tulip 将此连接器的返回值结构化为一个 slug 数组,每个值的旁边都标注了对应的索引位置。

Test Results as Slugs.png

基于对输出结果的这一理解,现在您可以将输出映射到自己的连接器函数中,并优化连接器返回的结果!

使用 Tulip AI 进行输出提取

利用本文已介绍的示例和概念(如( 和 对象列表)),快速构建您的输出结构。

Tulip AI 提供了一个强大的快捷方式,可自动分析测试结果中的 JSON 响应并生成相应的点表示法路径。它会尝试复现嵌套对象结构,但在必要时会将复杂的数组或对象展平。

Tulip AI 不会更改您现有的输出和提取内容。它仅生成新的或未指定的输出,以加快初始输出配置过程。

Tulip AI 生成输出后,您必须根据应用程序的目标对其进行审核。

审核时,请遵循以下最佳实践:* 删除任何不需要的输出* 为变量重命名以提高清晰度* 手动调整输出结构(例如,确保数组被正确设置为“对象列表”)

这些步骤可确保您仅提取应用程序所需的数据。

Image

进一步阅读