在 HTTP 连接器任务中将 JSON 载荷作为字符串处理

在本教程中,您将了解如何在 Application Integration 中使用 HTTP 连接器任务时处理 JSON 载荷。

如果错误地处理载荷,可能会导致 API 误解载荷,从而导致 400 Bad Request 错误。为确保 API 正确接收和解析 JSON 载荷,请将 JSON 载荷视为字符串,并将 Content-Type 标头明确设置为 application/json

准备工作

  • 验证您是否可以访问 Application Integration
  • 选择您的 Google Cloud 项目,然后完成以下任务:

    • 将以下角色授予您要用于创建连接的服务账号:
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor
    • 启用以下服务:
      • secretmanager.googleapis.com (Secret Manager API)
      • connectors.googleapis.com (Connectors API)

      如果您尚未为项目启用这些服务,则在创建连接时,“创建连接”页面会提示您启用这些服务。

  • 添加并配置 HTTP 连接器任务。
  • 添加并配置数据转换器任务,以准备 JSON 载荷和标头。

将 JSON 载荷作为字符串处理

如需在使用 HTTP 连接器任务时处理包含特殊字符的 JSON 载荷,请完成以下步骤:

为 JSON 载荷创建字符串变量

  1. 在 Google Cloud 控制台中,前往 Application Integration 页面。

    转到 Application Integration

  2. 在导航菜单中,点击集成
  3. 选择现有集成或创建新集成。确保您的集成包含已配置的 HTTP 连接器数据转换器任务,如准备工作部分中所述。
  4. 集成编辑器中,点击 创建,打开创建变量对话框。
  5. 创建变量对话框中:
    1. 输入以下信息:
      1. 名称:输入一个名称,例如 jsonPayloadString
      2. 数据类型:选择字符串
      3. 默认值
        • 如果 JSON 载荷由集成流程中的前一个任务(例如另一个数据转换器任务)填充,请将此字段留空。系统会根据集成中之前任务的输出动态填充该变量。
        • 如果 JSON 载荷未由前面的任务填充,您必须提供静态默认 JSON 载荷。在此字段中以单个字符串的形式输入 JSON 结构。

          以下是两种在默认值字段中输入 JSON 字符串的示例:

          不含特殊字符:如需表示 JSON {"name": "Developer", "key": "test"},请准确输入:{ "name": "Developer", "key": "test" }

          包含特殊字符:如果 JSON 包含换行符 (\n) 等特殊字符,您必须对这些字符进行转义。例如,如需表示 JSON {"key": "value1\nvalue2"},请在该字段中输入 {"key": "value1\\nvalue2"}

    2. 点击创建
    为 JSON 载荷创建字符串变量
  6. 如需详细了解如何创建和使用变量,请参阅变量

将字符串变量映射到连接器输入正文

数据转换器编辑器中,将 jsonPayloadString 变量映射到 connectorInputPayload.Body 字段。

  1. 在集成中,添加数据转换器任务
  2. 打开数据转换器编辑器。您可以使用图表模式脚本模式
  3. 如需映射变量,请执行以下操作:
    • 图表模式:添加 jsonPayloadString 作为输入,并将其映射到 connectorInputPayload.Body 输出字段。
    • 脚本模式:编写 Jsonnet 代码以分配值:connectorInputPayload.Body = vars.jsonPayloadString;

添加自定义 Content-Type 标头

  1. 数据转换器编辑器中,为自定义标头添加与 connectorInputPayload.Headers 字段的映射。
    • 图表模式:添加一个值为 {"Content-Type": "application/json"} 的常量输入,并将其映射到 connectorInputPayload.Headers
    • 脚本模式:添加以下 Jsonnet 以设置标头:
      connectorInputPayload.Headers = {
        "Content-Type": "application/json"
      };
              

执行 HTTP 连接器任务

在执行集成之前,请验证 connectorInputPayload.Body 是否由 jsonPayloadString 变量填充,以及 connectorInputPayload.Headers 是否包含 Content-Type: application/json 标头。此设置可确保 HTTP 连接器任务在数据转换器任务中以包含正确 Content-Type 的字符串形式发送 JSON 载荷。

运行集成以测试 API 请求。如果 API 返回 400 Bad Request 错误,请在数据转换器任务中再次验证 connectorInputPayload.BodyconnectorInputPayload.Headers 的映射。

后续步骤

尝试构建与其他连接器的集成。如需查看所有受支持的连接器列表,请参阅 连接器参考文档