n8n HTTP Request节点发送POST请求时,如何正确配置Body与Header?

2026-02-01 13 0

场景导入:为什么你的POST请求总是报错?

在N8N大学,笔者见过太多朋友在配置HTTP Request节点时栽跟头。明明接口文档写得清清楚楚,自己填上去却一直报 400 Bad Request 或者 401 Unauthorized。这种感觉就像手里拿着钥匙,却死活对不准锁孔。

尤其是发送POST请求时,Body和Header的配置简直是新手的“噩梦”。参数填错位置、格式不对、甚至少个符号,都会导致请求失败。今天,笔者就带你彻底搞懂这两个核心配置,让你从此告别调接口的焦虑。

核心实操:手把手配置Body与Header

在n8n中,HTTP Request节点是连接外部世界的桥梁。发送POST请求时,我们需要重点关注两个标签页:BodyHeaders。下面我拆解成三个步骤,跟着做即可。

第一步:搞懂Body的四种“姿势”

点击HTTP Request节点,找到 Body 选项卡。这里n8n提供了多种格式,千万别选错:

  • JSON:最常用,适合绝大多数现代API。选中后,下方会有一个代码编辑器,直接粘贴JSON数据即可。
  • Form-Data:如果你在上传文件,或者发送类似HTML表单的数据,必须选这个。它是键值对的形式。
  • Raw:如果你的接口要求发送纯文本、XML或其他自定义格式,选这个。记得在下方的下拉菜单中指定具体的MIME类型(如 application/xml)。
  • Binary:用于发送二进制流,比如图片或视频文件。

笔者建议: 90%的情况下,你用的是 JSON。直接在编辑器里写对象,比如 { "name": "n8n大学", "author": "笔者" }

第二步:配置Headers(重中之重)

切换到 Headers 选项卡。这里是“通行证”的存放处。常见的Header配置如下:

  • Content-Type:告诉服务器你发送的数据格式。如果是JSON,必须填 application/json;如果是Form-Data,填 application/x-www-form-urlencoded
  • Authorization:如果接口需要Token或API Key,通常在这里配置。格式通常是 Bearer YOUR_TOKENBasic base64编码
  • 自定义Header:有些业务接口需要特定的Header,比如签名验证的 Sign、时间戳的 Timestamp 等。

避坑点: 很多新手忘记加 Content-Type,导致服务器无法解析Body,直接返回400错误。这是最基础但也最容易被忽略的细节。

第三步:利用“参数”选项卡辅助(进阶技巧)

虽然我们主要在Body里写数据,但n8n还提供了一个 Parameters 选项卡。它通常用于GET请求,但在POST中也有妙用。如果你的请求体非常简单,只有寥寥几个字段,你也可以在这里直接添加键值对,n8n会自动帮你组装成JSON格式。

不过,对于复杂的嵌套JSON,笔者依然推荐直接在 Body -> JSON 中手写,这样更直观,也更容易调试。

避坑指南:实战中的两个致命细节

配置完上述内容,点击执行,依然报错?别慌,检查以下两点。

1. 引号与格式陷阱

在Body的JSON编辑器中,n8n默认是开启“解析JSON”的。这意味着你输入的字符串必须是标准的JSON格式。

错误示范: {name: 'n8n大学'}(单引号和未加引号的键名都是非法的)。
正确示范: { "name": "n8n大学" }(双引号包裹键名和字符串)。

如果你不确定自己的JSON是否合法,可以先去 JSONLint 网站校验一下,或者在n8n中将Body类型切换为 Raw,手动指定 application/json,然后粘贴你的代码。

2. 认证方式的混淆

n8n的HTTP Request节点有一个独立的 Authentication 选项卡(在Parameters上方)。如果你在这里配置了“通用凭证”(Generic Auth)或“Header Auth”,n8n会自动把这些Header加到请求中。

如果你在 Headers 选项卡里又手动填了一遍 Authorization,可能会导致Header重复,有些服务器会因此报错(如 401 Invalid Auth)。
解决方案: 二选一。要么用凭证功能,要么手动填Header,不要两边都填。

FAQ 问答

Q1: 为什么我发送的JSON数据在接收端变成了字符串?
A: 检查Header中的 Content-Type 是否为 application/json。如果缺少这个Header,服务器可能会把Body当作普通文本处理。

Q2: 如何在Body中使用n8n的动态数据(比如上一个节点的输出)?
A: 在Body编辑器中,可以直接使用表达式。例如,你要引用上一个节点的 id,可以写 { "user_id": "{{ $json.id }}" }。注意表达式语法的正确性。

Q3: 发送Form-Data时,上传文件字段怎么填?
A: 在Body选择 Form-Data 后,添加一行,Type选择 File,然后Value选择二进制数据流(通常来自Read Binary File节点)。如果是普通文本,Type选择 Text 即可。

总结与资源

配置n8n的HTTP Request节点,核心在于理解 Body 决定发什么,Header 决定怎么发。记住:JSON格式要标准,Header要准确,认证方式要统一。

如果你在实操中遇到其他报错,欢迎在N8N大学社区留言。笔者始终相信,只要逻辑清晰,自动化调接口其实比写代码简单得多。

相关文章

n8n Error Handling 节点报错太心烦?试试这些更灵活的替代方案
n8n 节点报错了?用 Error Handling 让它自动重试并通知你
n8n Wait节点在数据同步中的延迟控制实战
n8n Wait节点免费版:我能用它实现定时任务吗?
n8n Error Handling节点:当自动化流程“翻车”时,如何让它自动“扶起来”?
n8n Error Handling节点报错常见问题解决

发布评论