在自动化工作流工具中,n8n的优势在于其半开放式节点设计。当官方没有提供特定服务的集成节点时,用户可以通过这些节点手动实现功能适配。其中Code节点和HTTP Request节点是最常用的两种半开放式节点,为n8n的功能扩展提供了有力支持。
Code节点可以让用户直接编写JavaScript或Python代码,实现n8n内置功能之外的自定义逻辑。而HTTP Request节点则使用户能够向任意URL发起HTTP请求,从而将n8n未集成的第三方服务(如飞书、企业微信等)纳入工作流中。
一、n8n Code节点
Code节点是n8n中实现自定义功能的重要工具,它提供了灵活的代码执行能力。该节点有三个核心参数:
1、Mode(运行模式)
决定Code节点如何处理上游传入的数据:
(1)Run Once for All items:对上游传来的整组数据执行一次代码,适用于需要处理数据集整体的操作,如增减行、删除列等。
(2)Run Once for Each Item:对上游数据的每一行单独执行一次代码,适用于逐行处理数据的场景,如修改每行中的特定字段。
2、Language(语言选择)
支持JavaScript和Python两种语言:
(1)JavaScript:执行稳定性更高,是推荐的选择。
(2)Python:基于Pyodide实现,仅包含少数基础库且性能有限,建议仅在必要时使用。
3、代码编辑框
用户可在此编写实际执行的代码。代码中支持引用上游节点的输出变量,但需手动编写引用语法。例如:
const articles = $node[“Aggregate”].json[“data”]; // 假设 ‘Set’ 是你的上游节点,输出了文章的数组
let fullText = “”;
let index = 1; // 用于给文章编号articles.forEach((article) => {
fullText += `第${index}篇标题: \n# ${article.title}\n第${index}篇正文:\n${article.markdown}\n第${index}篇source: ${article.link}\n\n`;
if (index < articles.length) { // 在除了最后一篇文章外的每篇文章后添加分隔符
fullText += “—————\n\n”;
}
index++; // 增加文章编号
});return [{json: {fullText}}];
4、Code节点注意事项
(1)默认仅引用少量基础库。
(2)不支持直接读写本地文件,需配合Read File(s) From Disk或Write File to Disk节点使用。
(3)不支持发起HTTP请求,网络请求需使用HTTP Request节点。
(4)若完全不会编程,可使用n8n官方云服务的AI Code功能,通过自然语言生成代码。
二、 n8n HTTP Request节点
HTTP Request节点用于向任意URL发起HTTP请求,是集成第三方服务的关键工具。其核心参数包括:
1、Method(请求方法)
支持多种HTTP请求方法:
- GET:获取资源数据(最常用)
- POST:提交数据至资源
- PUT:更新完整资源
- DELETE:删除资源
- HEAD:获取资源头部信息
- OPTIONS:查询资源支持的通信选项
- PATCH:部分更新资源
2、URL
请求的目标地址,可包含上游节点的动态变量,如:”https://api.notion.com/v1/blocks/{{ $(‘Notion’).item.json.id }}/children”
3、Authentication(身份验证)
支持三种认证方式:
- None:无需认证
- Predefined Credential Type:使用n8n预制的认证类型(如Notion、GitHub等)
- Generic Credential Type:自定义认证方式
4、Send Query Parameters
添加URL查询参数(格式:key=value)。
5、Send Headers
添加HTTP请求头(如Content-Type、Authorization等)。
6、Send Body
添加请求体数据,支持多种格式(JSON、表单等),适用于传递复杂参数或提交内容。
HTTP Request节点使用场景:
- API数据获取:调用第三方API
- 数据提交:向API提交表单或上传文件
- 网页爬虫触发:发起HTTP请求触发爬虫任务
- 未集成服务对接:连接n8n未内置的服务
调试建议:由于n8n的HTTP Request调试界面不够友好,建议使用Postman或RapidAPI等专业工具先进行API请求调试,然后将调试成功的请求导出为cURL格式,再通过n8n HTTP Request节点的”Import cURL”功能导入。
三、实际案例
以向Notion页面追加内容为例,HTTP Request节点的配置步骤如下:
1、Method:选择”PATCH”。
2、URL:”https://api.notion.com/v1/blocks/{{ $(‘Notion’).item.json.id }}/children”
(其中”{{ $(‘Notion’).item.json.id }}”为上游节点输出的Notion页面ID)。
3、Authentication:选择”Predefined Credential Type”,并配置Notion API凭证。
4、Send Query Parameters:不设置。
5、Send Headers:不设置(使用预制认证时自动添加)。
6、Send Body: Body Parameters添加”children”字段,值为”{{ $json.data }}”(上游传递的JSON数据)。
7、Options配置: 开启Batching,设置每批1个items,间隔4秒 (避免请求频率过高被Notion API限制)





