6.6. 如何指定 HTTP 请求
以下示例演示了如何为 Fuse Online Webhook 指定 HTTP 请求。
只使用 HTTP 正文的 POST 请求的 Webhook 示例
考虑以 Webhook 连接开头的集成,然后在 Fuse Online-provided 数据库的 Todo 表中创建一个行:
在创建这种集成时,当您添加 Webhook 启动连接时,您可以使用具有此内容的 JSON 实例指定其输出数据类型: {"todo":"text"}
:
当您将 PostgresDB 连接添加为完成连接时,您可以选择 Invoke SQL 操作并指定此 SQL 语句:
插入 TODO(任务)值(:#TASK)
添加数据库连接后,您添加一个映射步骤:
您保存并发布集成。当它运行时,您可以复制 Fuse Online 提供的外部 URL:
要了解外部 URL 的部分,请考虑这个示例 URL:
https://i-webhook-to-db-myproject.192.168.64.4.nip.io/webhook/bvGvQdpq308BcHIQQYeysFOK4plFISmghNHkRyOOk3YppitvOd
值 | 描述 |
---|---|
| Fuse Online 始终在 URL 的开头插入这个值。 |
| 集成的名称。 |
| 包含运行集成的 pod 的 OpenShift 命名空间。 |
| 为 OpenShift 配置的 DNS 域。这表示提供 webhook 的 Fuse Online 环境。 |
| 出现在每个 Webhook 连接 URL 中。 |
| 在将 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
选项指定 HTTPContent-Type
标头。 -
d
选项默认将 HTTP 方法设置为POST
。
这个命令的执行会触发集成。数据库完成连接将新任务插入到 tasks 表中。要查看这一点,请显示 Todo app,例如 https://todo-myproject.192.168.64.4.nip.io
,点 Update,您应该在新任务中看到 Webhook
。
带有查询参数的 POST 请求的 Webhook 示例
在本例中,请考虑与上例中的相同的集成:
但在本示例中,您可以通过使用此内容指定 JSON 模式来定义 Webhook 连接输出数据类型:
在这个 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 实例:
这是启用以下映射的内部 JSON 实例:
带有 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 模式,其定义如下。
以下是发送 GET
请求的 curl
命令:
curl 'https://i-webhook-params-to-db-myproject.192.168.42.235.nip.io/webhook/ZYWrhaW7dVk097vNsLX3YJ1GyxUFMFRteLpw0z4O69MW7d2Kjg?source=web&status=new'`