在 HTTP 连接器任务中将 JSON 载荷作为字符串处理
在本教程中,您将了解如何在 Application Integration 中使用 HTTP 连接器任务时处理 JSON 载荷。
如果错误地处理载荷,可能会导致 API 误解载荷,从而导致 400 Bad Request 错误。为确保 API 正确接收和解析 JSON 载荷,请将 JSON 载荷视为字符串,并将 Content-Type 标头明确设置为 application/json。
准备工作
- 验证您是否可以访问 Application Integration。
-
选择您的 Google Cloud 项目,然后完成以下任务:
- 将以下角色授予您要用于创建连接的服务账号:
roles/secretmanager.viewerroles/secretmanager.secretAccessor
- 启用以下服务:
secretmanager.googleapis.com(Secret Manager API)connectors.googleapis.com(Connectors API)
如果您尚未为项目启用这些服务,则在创建连接时,“创建连接”页面会提示您启用这些服务。
- 将以下角色授予您要用于创建连接的服务账号:
- 添加并配置 HTTP 连接器任务。
- 添加并配置数据转换器任务,以准备 JSON 载荷和标头。
将 JSON 载荷作为字符串处理
如需在使用 HTTP 连接器任务时处理包含特殊字符的 JSON 载荷,请完成以下步骤:
为 JSON 载荷创建字符串变量
- 在 Google Cloud 控制台中,前往 Application Integration 页面。
- 在导航菜单中,点击集成。
- 选择现有集成或创建新集成。确保您的集成包含已配置的 HTTP 连接器和数据转换器任务,如准备工作部分中所述。
- 在集成编辑器中,点击 创建,打开创建变量对话框。
- 在创建变量对话框中:
- 输入以下信息:
- 名称:输入一个名称,例如
jsonPayloadString。 - 数据类型:选择字符串。
- 默认值:
- 如果 JSON 载荷由集成流程中的前一个任务(例如另一个数据转换器任务)填充,请将此字段留空。系统会根据集成中之前任务的输出动态填充该变量。
- 如果 JSON 载荷未由前面的任务填充,您必须提供静态默认 JSON 载荷。在此字段中以单个字符串的形式输入 JSON 结构。
以下是两种在默认值字段中输入 JSON 字符串的示例:
不含特殊字符:如需表示 JSON
{"name": "Developer", "key": "test"},请准确输入:{ "name": "Developer", "key": "test" }。包含特殊字符:如果 JSON 包含换行符 (
\n) 等特殊字符,您必须对这些字符进行转义。例如,如需表示 JSON{"key": "value1\nvalue2"},请在该字段中输入{"key": "value1\\nvalue2"}。
- 名称:输入一个名称,例如
- 点击创建。
如需详细了解如何创建和使用变量,请参阅变量。
- 输入以下信息:
将字符串变量映射到连接器输入正文
在数据转换器编辑器中,将 jsonPayloadString 变量映射到 connectorInputPayload.Body 字段。
- 在集成中,添加数据转换器任务。
- 打开数据转换器编辑器。您可以使用图表模式或脚本模式。
- 如需映射变量,请执行以下操作:
- 图表模式:添加
jsonPayloadString作为输入,并将其映射到 connectorInputPayload.Body 输出字段。 - 脚本模式:编写 Jsonnet 代码以分配值:
connectorInputPayload.Body = vars.jsonPayloadString;。
- 图表模式:添加
添加自定义 Content-Type 标头
- 在数据转换器编辑器中,为自定义标头添加与 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.Body 和 connectorInputPayload.Headers 的映射。
后续步骤
尝试构建与其他连接器的集成。如需查看所有受支持的连接器列表,请参阅 连接器参考文档。