简介
HTTP Request 节点是 n8n 中的瑞士军刀。当你需要的服务没有内置集成时,这个节点允许你直接调用任意 REST API——GET、POST、PUT、PATCH、DELETE,应有尽有。响应返回后,n8n 会提供完整的 JSON payload,你可以使用表达式精确提取你所关心的字段。
本课将完整演示这一循环:配置节点、发起请求、读取响应结构,并将特定值接入工作流的下一步。
配置 HTTP Request 节点
将 HTTP Request 节点添加到画布上,然后首先填写三项内容:HTTP 方法、URL,以及身份验证(如果 API 需要的话)。
对于无需身份验证的公共接口,在 n8n URL 表达式字段中最简单的 GET 请求如下所示:
如果 API 需要密钥,请进入 Authentication 部分,选择 Header Auth,然后设置请求头名称(通常为 Authorization)和值(通常为 Bearer YOUR_TOKEN)。你可以将 token 保存在 n8n Credential 中,这样它就不会被硬编码到节点里。
当你需要发送 JSON body 时(例如用于创建资源的 POST 请求),请将 Body Content Type 设置为 JSON,并在 Body 字段中编写 payload:
双花括号语法是 n8n 的表达式引擎,会在运行时从上一个节点的输出中提取值。
读取响应结构
点击 Execute Node 后,n8n 会在右侧的 Output 面板中显示响应。每个响应都会呈现三项内容:状态码、请求头和 body。默认情况下,n8n 会自动解析 JSON body,并将其作为结构化数据返回,方便你进行遍历。
假设 Open-Meteo API 返回如下内容:
在 Output 面板中,你可以点击展开树状结构来查看每个嵌套字段。这一个探索步骤非常重要——在编写任何表达式之前先执行它,这样你就能知道准确的 key 路径。
如果 API 返回的不是 JSON 响应(纯文本、XML),请启用 Return Full Response 选项,并将 Response Format 改为 Text,然后在下游的 Code 节点中手动处理解析。
使用表达式提取数据
了解结构后,你可以在任意下游节点中使用 n8n 的表达式语法引用字段。HTTP Request 输出的根始终可以通过节点名称访问。
在下一个节点中获取上面示例中的温度:
或者,如果你正位于紧接其后的节点中(即隐式的前一个节点),可以使用简写形式:
当 API 返回一个数组时——例如订单列表——响应 body 本身就是一个数组,或者它会被嵌套在 data 这样的 key 下。要对其进行循环处理,可以将 HTTP Request 节点连接到 Split In Batches 节点,或使用设置为 Split Out Items 的 Item Lists 节点,之后每个下游执行会一次接收一个 item。
如果不想拆分,下面是如何直接引用第三个 item 的 id 字段(从 0 开始计数):
🖥️ [建议在此处插入示意图:左侧展示 JSON 响应树状结构,箭头指向右侧的表达式引用]
常见错误
发送 POST 数据时,最常见的问题是缺少 Content-Type 请求头。如果你将 Body Content Type 设置为 JSON,n8n 会自动添加该请求头。如果切换到 Raw,则需要手动添加请求头:Content-Type 的值为 application/json。
另一个常见错误是尝试引用的字段比预期深一层。在编写表达式之前,请始终使用 Output 面板验证准确的路径——对 API 响应结构的假设往往是错误的。
第三个问题是速率限制。如果你的工作流频繁针对同一 API 运行,请在迭代之间添加一个 Wait 节点,并查看 API 文档中的速率限制请求头(Retry-After、X-RateLimit-Remaining)。n8n 不会自动处理速率限制。
总结
HTTP Request 节点涵盖三个操作:设置方法和 URL、在需要时进行身份验证、并发送可选的 body。执行后,使用 Output 面板浏览响应树,然后通过表达式在下游节点中引用特定字段——简写形式使用 $json,跨节点访问则使用 $node["NodeName"].json。对于数组响应,请在逐项处理之前先拆分 items。熟悉这一循环后,你就可以在 n8n 中与几乎任何 REST API 进行集成。
课程检查点
巩固所学知识,获取作业反馈。