🆓半开放式节点(Code/HTTP Request)详细介绍

type
status
date
slug
summary
tags
category
icon
password
author
标签
第三方接入
 
和 Coze 这种全封装的在线服务式 Workflow 相比,n8n 最大的优势之一,就是半开放式节点。这些节点允许你在找不到官方适配的节点的情况下,手动适配一些功能。
在 n8n 里,最常用的两个这样的节点是 Code 和 HTTP Request。
前者意味着你可以直接写一段 Javascripts 或 Python 代码来实现 n8n 里没有内置的功能,后者则允许你向互联网上的任何 URL 发起 HTTP 请求,这意味着你能够将那些 n8n 里没有集成的服务(比如飞书、企业微信)集成到你的 Workflow 里。
在这个页面里,我们将详细的介绍这两个节点的用法。
💡
如果你真的一点代码不想写,目前 n8n 官方云服务版提供了 AI Code 功能。直接输入自然语言需求,就能由 AI 生成符合你需求的 Code 节点。

1. Code 节点

notion image
Code 节点有三个参数,分别是 Mode、Language 和 JavaScript。

参数详解

Mode
选择 Code 节点的运行方式,分为 Run Once for All items 和 Run Once for Each Item。
顾名思义,就是当上游传来一组数据的时候,Code 节点是整组数据运行一次,还是每行数据运行一次。
比如说,如果你 Code 是要给一组数据中整体进行操作(增减一行,删除一列),你就选 Run Once for All items。
如果你想让 Code 是要针对一组数据中的每一行进行操作(每行中的某个字段做下修改),你就选 Run Once for Each Item。
Language
设定 Code 节点编写代码的语言,分为 JavaScripts 和 Python。你熟悉那种就可以用那种,但 n8n 在执行 JavaScripts 代码时更稳定。如果你不会这两种语言,在用 ChatGPT 结对编写 Workflow,建议选择 JavaScripts。
代码
第三个文本框就是个代码编辑框了,你在这个编辑框里可以编写这个节点实际要运行的代码。这里的代码同样支持 n8n 从上游引用变量的特性,但它不支持从 INPUT 面板直接拖拽,你需要手工编写变量。
比如,在我的这段示例代码中,$node["Aggregate"].json["data"] 就是上游节点的变量,它相当于给之 articles 这个 JavaScripts 变量注入了来自节点 Aggregate 的 data 数据。
如果你完全不会写代码,建议与 ChatGPT 结对编程。

注意事项

  • Code 节点默认只引用了少数的 JavaScripts 库,如需使用更多库,可参阅官方文档:
  • Code 节点不支持向本地服务器读取或写入文件,你需要先用 Read File(s) From Disk 或 Write File to Disk 节点来处理读取和写入的步骤。
  • Code 节点不支持发起 HTTP 请求,你需要使用 HTTP Request 节点来处理远端请求。
  • Code 节点的 Python 移植自 Pyodide,这意味着它仅包含极少数的库,且性能较差。

2. HTTP Request

顾名思义,这个节点的作用是向任何网址发起一个 HTTP Request。
关于 HTTP Request 的科普

什么是 HTTP Request?

HTTP 请求是在网络中进行通信的一种方式。HTTP 是 "超文本传输协议" 的缩写,它定义了客户端(通常是网页浏览器)如何向服务器发送数据请求,以及服务器如何对这些请求做出响应。在 HTTP 请求中,客户端会发送一个请求到服务器,请求包含一个请求方法(如 GET、POST 等),一个 URL,和可选的额外信息,如请求头或消息体。服务器收到请求后,会根据请求的内容进行处理,并返回一个 HTTP 响应,响应中包含了状态码(表示请求成功或失败),响应头,以及响应的正文内容。因此,HTTP 请求是构建和交互网络应用的基础,它让我们能够浏览网页,提交表单,下载文件,等等。
简单来说,你在浏览器里点击一个链接、按下一个按钮都是 HTTP Request。
HTTP Request 节点在各种情况下都非常有用。常见的使用场景包括:
  • 从 API 获取数据:许多在线服务(如天气预报、股市信息、社交媒体平台等)都提供 API 来访问其数据。使用 HTTP Request 节点,你可以在 n8n 中直接调用这些 API,从而获取你需要的数据。
  • 提交数据到 API:除了获取数据,你也可以使用 HTTP Request 节点将数据提交到API。例如,你可能需要向某个服务提交表单数据,或者向某个数据库 API 提交新的记录。
  • 触发网页爬虫:如果你正在运行一个网页爬虫,你可以使用 HTTP Request 节点来触发爬虫的运行,从而抓取网页上的数据。
  • 与未在 n8n 中集成的服务进行交互:如果你希望使用的某个在线服务没有在 n8n 中集成,你可以使用 HTTP Request 节点来与该服务进行交互。只要这个服务提供了 API,你就可以通过发送 HTTP 请求来调用这个 API,从而实现与该服务的交互。
最典型的用法:n8n 没有内置国产大模型和飞书、企业微信的节点,如果你需要集成这些外部服务,你就需要 HTTP Request。

参数详解

Method - 定义发起何种类型的 HTTP Request,n8n 支持以下类型的 HTTP Request。
方法
描述
GET
从指定的资源请求数据。这是最常用的 HTTP 方法。数据被检索而不被修改。
POST
向指定的资源提交数据进行处理。常用于提交表单数据或上传文件。
PUT
用新数据更新当前资源。用提供的数据替换整个资源。
DELETE
删除指定的资源。
HEAD
类似于 GET,但只传输状态行和头部部分。用于在实际请求之前检查 GET 请求将返回的内容。
OPTIONS
描述目标资源的通信选项。用于 CORS 预检请求,以检查允许的 HTTP 方法。
PATCH
部分更新资源。只更改指定的字段,而不是替换整个资源。
URL - 向哪个地址发起 HTTP Request。
Authentication - 是否发起带有 HTTP Request 带有权鉴的请求,它有三个选项 None(无权鉴),Predefined Credential Type(n8n 预制的权鉴类型),Generic Credential Type(完全自定义的权鉴类型)。
Send Query Parameters - 请求时添加额外的查询参数。
Send Headers - 请求时添加额外的的 Headers。
Send Body - 请求时添加额外的 Body,通过 Body 来发送长参数或提交内容。
如果你不能理解这些方法的具体作用也不要紧,一般来说,你要接入的服务 API 都有自己的文档,他们的文档会告诉你他们的请求应该包含什么内容。
简单来说,一个 HTTP 请求是由 URL 定义向哪里请求,由 Authentication 告诉对方你是谁(比如账号密码),由 Send Query Parameters 决定请求什么的。
n8n 的 HTTP Request 调试界面并不是特别友好,我的建议是你在 PostmanRapidAPI 进行调试。这两个都是 API 调试工具,它不是编程工具,主要就是帮助你构建一个 API 请求。然后,你可以在这些工具中找到一个功能是导出为 curl。在 n8n 的 HTTP Request 节点的面板右上角有一个功能叫 Import cURL,你直接把导出的内容复制进去就可以了。
如果你想详细了解 API 调试教程,你可以参考 Apifox 的这个教程,写的非常详细:

案例

notion image
这个完整 Workflow 的作用,是当稍后阅读 Ominivore 中收藏的文章全文,存入 Notion 里。在此处,我们只解释最后一部分 HTTP Request 的部分,在这里 HTTP Request 的作用是将上游传递过来的一包已经处理好的 json 数据推送给 notion 指定的页面。
notion image
notion image
我们详细解释一下在这里 HTTP Request 的设置:
Method - PATCH,这是依据 notion 的 API 文档设置的。notion API 中添加 block 的方法叫 Append block children,它是一个 PATCH 型的 API 端口,所以这里要选 PATCH。
URL - https://api.notion.com/v1/blocks/{{ $('Notion').item.json.id }}/children,这里是指 API 的地址。我们根据 notion 官方的文档得知,我们需要直接在 URL 里填入需要向哪个 notion 页面添加 block。所以,我们在这个地址中引入了一个 Workflow 上游的变量,也就是 {{ $('Notion').item.json.id }}
Authentication - n8n 内置了 notion 的权鉴,所以这里我们选择 Predefined Credential Type,然后在 Credential Type 中寻找 notion,再在 Notion API 处按照提示添加一个 notion 的凭证。
Send Query Parameters - 因为我们要推送一个很长的内容上去,所以我们这里不用 Send Query Parameters。
Send Headers - 不设置。
Send Body - 这里要打开,我们需要通过 Body 来传递文章正文。
Body Parameters - 添加一个 body 参数,Name 为 children(由 notion API 官方定义),它的值为 {{ $json.data }},也就是上游传递过来的一包 json。
Options 下打开 Batching - 设置为没批 1 个 items,每次停 4 秒。这避免了提交太快,被 notion 的 API 拉黑。

3. 发散

有了 Code 和 HTTP Request,你实际上可以在 n8n 里实现很多其他低代码平台实现不了的功能。
但是用 Code 和 HTTP Request 节点的难度较高,如果你是零基础的小白,建议多问问 ChatGPT 或 Monica
广告
 
AI节点详细介绍n8n如何接入国产大模型?
Loading...
目录