6.6. 如何指定 HTTP 请求


以下示例演示了如何为 Fuse Online Webhook 指定 HTTP 请求。

只使用 HTTP 正文的 POST 请求的 Webhook 示例

考虑以 Webhook 连接开头的集成,然后在 Fuse Online-provided 数据库的 Todo 表中创建一个行:

Webhook-Data Mapper-DB integration

在创建这种集成时,当您添加 Webhook 启动连接时,您可以使用具有此内容的 JSON 实例指定其输出数据类型: {"todo":"text"}

Specify Data Shape Image

当您将 PostgresDB 连接添加为完成连接时,您可以选择 Invoke SQL 操作并指定此 SQL 语句:

插入 TODO(任务)值(:#TASK)

添加数据库连接后,您添加一个映射步骤:

Map Todo to Task

您保存并发布集成。当它运行时,您可以复制 Fuse Online 提供的外部 URL:

External URL

要了解外部 URL 的部分,请考虑这个示例 URL:

https://i-webhook-to-db-myproject.192.168.64.4.nip.io/webhook/bvGvQdpq308BcHIQQYeysFOK4plFISmghNHkRyOOk3YppitvOd

Expand
描述

i-

Fuse Online 始终在 URL 的开头插入这个值。

webhook-to-db

集成的名称。

myproject

包含运行集成的 pod 的 OpenShift 命名空间。

192.168.64.4.nip.io

为 OpenShift 配置的 DNS 域。这表示提供 webhook 的 Fuse Online 环境。

webhook

出现在每个 Webhook 连接 URL 中。

bvGvQdpq308BcHIQQYeysFOK4plFISmghNHkRyOOk3YppitvOd

在将 Webhook 连接添加到集成时,Fuse Online 提供的 Webhook 连接令牌。令牌是一个随机字符串,在 中提供安全性的随机字符串使 URL 难以识别,这可以防止其他人发送请求。

在请求中,您可以指定 Fuse Online 提供的令牌,也可以自行定义。如果您自行定义,请确保很难猜测。

正如您在外部 URL 中看到的那样,Fuse Online 从集成名称、OpenShift 命名空间名称和 OpenShift DNS 域中构造主机名。Fuse Online 删除 illegal 字符,并将空格转换为连字符。在外部 URL 示例中,这是主机名:

https://i-webhook-to-db-myproject.192.168.64.4.nip.io

要使用 curl 调用 Webhook,您需要指定该命令,如下所示:

curl -H 'Content-Type: application/json' -d '{"todo":"from webhook"}' https://i-webhook-to-db-myproject.192.168.64.4.nip.io/webhook/bvGvQdpq308BcHIQQYeysFOK4plFISmghNHkRyOOk3YppitvOd

  • -H 选项指定 HTTP Content-Type 标头。
  • d 选项默认将 HTTP 方法设置为 POST

这个命令的执行会触发集成。数据库完成连接将新任务插入到 tasks 表中。要查看这一点,请显示 Todo app,例如 https://todo-myproject.192.168.64.4.nip.io,点 Update,您应该在新任务中看到 Webhook

带有查询参数的 POST 请求的 Webhook 示例

在本例中,请考虑与上例中的相同的集成:

Webhook-Data Mapper-DB integration

但在本示例中,您可以通过使用此内容指定 JSON 模式来定义 Webhook 连接输出数据类型:

{
  "type": "object",
  "definitions": {},
  "$schema": "http://json-schema.org/draft-07/schema#",
  "id": "io:syndesis:webhook",
  "properties": {
    "parameters": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "body": {
      "type": "object",
      "properties": {
        "company": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        }
      }
    }
  }
}
Copy to Clipboard Toggle word wrap

在这个 JSON 模式中:

  • id 必须设置为 io.syndesis.webhook
  • parameters 部分必须指定 HTTP 查询参数。
  • body 部分必须指定正文内容,如果需要,它可能很复杂。例如,它可以定义嵌套属性和数组。

这提供了 Webhook 连接器需要为集成中下一步准备内容的信息。

要使用 curl 发送 HTTP 请求,请调用类似如下的命令:

curl -H 'Content-Type: application/json' -d '{"company":"Gadgets","email":"sales@gadgets.com","phone":"+1-202-555-0152"}'https://i-webhook-params-to-db-myproject.192.168.42.235.nip.io/webhook/ZYWrhaW7dVk097vNsLX3YJ1GyxUFMFRteLpw0z4O69MW7d2Kjg?source=web&status=new

当 Webhook 连接收到这个请求时,它会创建一个类似如下的 JSON 实例:

{
  "parameters": {
    "source": "web",
    "status": "new"
  },
  "body": {
    "company": "Gadgets",
    "email": "sales@gadgets.com",
    "phone": "+1-202-555-0152"
  }
}
Copy to Clipboard Toggle word wrap

这是启用以下映射的内部 JSON 实例:

Map to Add Lead

带有 GET 的 Webhook 示例

要触发与不提供输入数据的 GET 请求的集成,请将 Webhook 连接输出数据形式指定为带有定义 '{}' 的 JSON 实例。然后您可以调用以下 curl 命令,该命令没有指定查询参数:

curl 'https://i-webhook-params-to-db-myproject.192.168.42.235.nip.io/webhook/ZYWrhaW7dVk097vNsLX3YJ1GyxUFMFRteLpw0z4O69MW7d2Kjg'

您可以更改前面的 POST 示例,以使用查询参数但没有正文来发送 GET 请求。您可以将 Webhook 连接输出数据形式指定为 JSON 模式,其定义如下。

{
  "type": "object",
  "definitions": {},
  "$schema": "http://json-schema.org/draft-07/schema#",
  "id": "io:syndesis:webhook",
  "properties": {
    "parameters": {
      "type": "object",
      "properties": {
        "source": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    }
  }
}
Copy to Clipboard Toggle word wrap

以下是发送 GET 请求的 curl 命令:

curl 'https://i-webhook-params-to-db-myproject.192.168.42.235.nip.io/webhook/ZYWrhaW7dVk097vNsLX3YJ1GyxUFMFRteLpw0z4O69MW7d2Kjg?source=web&status=new'`

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat