常见问题与解答#
以下是关于 Webhook 节点的一些常见问题和解决方案。
监听多种 HTTP 方法#
默认情况下,Webhook 节点只接受单一 HTTP 方法的调用。例如,它可以接受 GET 或 POST 请求,但不能同时接受两者。如需接受多种方法的调用:
- 打开节点设置
- 启用允许多种 HTTP 方法
- 返回参数设置。默认情况下,节点现在会接受 GET 和 POST 调用。您可以在 HTTP 方法字段中添加其他方法
Webhook 节点为每种方法提供单独的输出,因此您可以根据不同的 HTTP 方法执行不同的操作。
使用 HTTP Request 节点触发 Webhook 节点#
HTTP Request 节点可以向您指定的 URL 发起 HTTP 请求。
- 创建一个新工作流
- 在工作流中添加 HTTP Request 节点
- 从请求方法下拉列表中选择方法。例如,如果您在 Webhook 节点中选择了 GET 作为 HTTP 方法,则在 HTTP Request 节点中也选择 GET 作为请求方法
- 从 Webhook 节点复制 URL,并粘贴到 HTTP Request 节点的 URL 字段中
- 如果使用 webhook 节点的测试 URL:请先执行包含 Webhook 节点的工作流
- 执行 HTTP Request 节点
使用 curl 触发 Webhook 节点#
您可以使用 curl 发起 HTTP 请求来触发 Webhook 节点。
Note
在示例中,请将 <https://your-n8n.url/webhook/path>
替换为您实际的 webhook URL。
示例中使用的是 GET 请求,您可以使用在 HTTP 方法 中设置的任何 HTTP 方法。
发起不带任何参数的 HTTP 请求:
1 |
|
发起带 body 参数的 HTTP 请求:
1 |
|
发起带 header 参数的 HTTP 请求:
1 |
|
发起 HTTP 请求发送文件:
1 |
|
/path/to/file
替换为您要发送的文件路径。
发送字符串类型的响应#
默认情况下,响应格式为 JSON 或数组。要发送字符串类型的响应:
- 选择 响应模式 > 当最后一个节点完成时。
- 选择 响应数据 > 首个条目 JSON。
- 选择 添加选项 > 属性名称。
- 输入包含响应的属性名称,默认为
data
。 - 将 Edit Fields 节点 连接到 Webhook 节点。
- 在 Edit Fields 节点中,选择 添加值 > 字符串。
- 在 名称 字段输入属性名称,应与步骤 4 中的属性名称一致。
- 在 值 字段输入字符串值。
- 将 仅保留设置项 切换为开启状态(绿色)。
当您调用 Webhook 时,它将发送来自 Edit Fields 节点的字符串响应。
测试 URL 与生产环境 URL 对比#
n8n 为每个 Webhook 节点生成两种 Webhook URL:测试 URL 和 生产环境 URL。
在构建或测试工作流时,请使用 测试 URL。当您准备在生产环境中使用 Webhook URL 时,请切换至 生产环境 URL。
URL 类型 | 触发方式 | 监听持续时间 | 是否在编辑器界面显示数据? |
---|---|---|---|
测试 URL | 选择 监听测试事件 并从源触发测试事件 | 120 秒 | |
生产环境 URL | 激活工作流 | 直到工作流停用 |
更多信息请参阅工作流开发。
白名单中的 IP 地址连接失败#
如果您无法从 IP 白名单中的地址建立连接,请检查 n8n 是否运行在反向代理之后。
如果是这种情况,请将 N8N_PROXY_HOPS
环境变量 设置为 n8n 运行所在的反向代理层级数量。
每个路径和方法仅允许一个 Webhook#
n8n 只允许为每个路径和 HTTP 方法组合注册一个 Webhook(例如,对 /my-request
的 GET
请求)。这避免了请求应该由哪个 Webhook 接收的歧义。
如果您收到所选路径和方法已被占用的提示,您可以:
- 停用包含冲突 Webhook 的工作流
- 修改其中一个冲突 Webhook 的路径和/或方法