[ PROMPT_NODE_28150 ]
webhook_processing
[ SKILL_DOCUMENTATION ]
# Webhook 处理模式
**用例**:接收来自外部系统的 HTTP 请求并立即处理。
---
## 模式结构
Webhook → [验证] → [转换] → [动作] → [响应/通知]
**关键特性**:即时事件驱动处理
---
## 核心组件
### 1. Webhook 节点 (触发器)
**目的**:创建 HTTP 端点以接收数据
**配置**:
javascript
{
path: "form-submit", // URL 路径: https://n8n.example.com/webhook/form-submit
httpMethod: "POST", // GET, POST, PUT, DELETE
responseMode: "onReceived", // 或 "lastNode" 用于自定义响应
responseData: "allEntries" // 或 "firstEntryJson"
}
**关键注意点**:数据嵌套在 `$json.body` 下
javascript
❌ {{$json.email}}
✅ {{$json.body.email}}
### 2. 验证 (可选但推荐)
**目的**:在处理前验证传入数据
**选项**:
- **IF 节点** - 检查必填字段是否存在
- **Code 节点** - 自定义验证逻辑
- **停止并报错** - 优雅地失败并显示消息
**示例**:
javascript
// IF 节点条件
{{$json.body.email}} 不为空 AND
{{$json.body.name}} 不为空
### 3. 转换
**目的**:将 Webhook 数据映射为所需格式
**典型节点**:
- **Set** - 字段映射
- **Code** - 复杂转换
**示例** (Set 节点):
javascript
{
"user_email": "={{$json.body.email}}",
"user_name": "={{$json.body.name}}",
"timestamp": "={{$now}}"
}
### 4. 动作
**目的**:对数据进行处理
**常见动作**:
- 存储到数据库 (Postgres, MySQL, MongoDB)
- 发送通知 (Slack, Email, Discord)
- 调用另一个 API (HTTP 请求)
- 更新外部系统 (CRM, 支持工单)
### 5. 响应 (如果 responseMode 为 "lastNode")
**目的**:发送自定义 HTTP 响应
**Webhook 响应节点**:
javascript
{
statusCode: 200,
headers: {
"Content-Type": "application/json"
},
body: {
"status": "success",
"message": "表单已接收"
}
}
---
## 常见用例
### 1. 表单提交
**流程**:表单 → Webhook → 验证 → 数据库 → 邮件确认
**示例**:
1. Webhook (路径: "contact-form", POST)
2. IF (检查 email 和 message 不为空)
3. Postgres (插入到 contacts 表)
4. Email (发送确认邮件给用户)
5. Slack (在 #leads 频道通知团队)
6. Webhook 响应 ({"status": "success"})
**真实数据访问**:
javascript
姓名: {{$json.body.name}}
邮箱: {{$json.body.email}}
消息: {{$json.bod