HTTP Request 节点#
HTTP Request 节点是 n8n 中最通用的节点之一。它允许你发出 HTTP 请求以从任何具有 REST API 的应用程序或服务查询数据。你可以将 HTTP Request 节点用作常规节点,或将其附加到 AI 代理以用作工具。
使用此节点时,你正在创建 REST API 调用。你需要对基本 API 术语和概念有一定的了解。
有两种创建 HTTP 请求的方法:配置节点参数或导入 curl 命令。
凭据
有关设置身份验证的指导,请参阅 HTTP Request 凭据。
节点参数#
方法#
选择用于请求的方法:
- DELETE
- GET
- HEAD
- OPTIONS
- PATCH
- POST
- PUT
URL#
输入你想要使用的端点。
身份验证#
n8n 建议在可用时使用预定义凭据类型选项。与配置通用凭据相比,它提供了一种更简单的设置和管理凭据的方法。
预定义凭据#
n8n 支持的集成的凭据,包括内置节点和社区节点。使用预定义凭据类型进行自定义操作,无需额外设置。有关更多信息,请参阅自定义 API 操作。
通用凭据#
n8n 不支持的集成的凭据。你需要手动配置身份验证过程,包括指定所需的 API 端点、必要的参数和身份验证方法。
你可以选择以下方法之一:
- 基本身份验证
- 自定义身份验证
- 摘要身份验证
- 标头身份验证
- OAuth1 API
- OAuth2 API
- 查询身份验证
有关设置每种凭据类型的更多信息,请参阅 HTTP request 凭据。
发送查询参数#
查询参数充当 HTTP 请求的过滤器。如果你正在交互的 API 支持它们,并且你正在发出的请求需要过滤器,请打开此选项。
指定查询参数使用以下可用选项之一:
- 使用下面的字段:输入查询参数的名称/值对。要输入更多查询参数名称/值对,请选择添加参数。名称是你要过滤的字段的名称,值是过滤器值。
- 使用 JSON:输入 JSON 来定义查询参数。
有关详细指导,请参阅你的服务的 API 文档。
发送标头#
使用此参数随请求发送标头。标头包含有关请求的元数据或上下文。
指定标头使用以下可用选项之一:
- 使用下面的字段:输入标头参数的名称/值对。要输入更多标头参数名称/值对,请选择添加参数。名称是你希望设置的标头,值是你想要为该标头传递的值。
- 使用 JSON:输入 JSON 来定义标头参数。
有关详细指导,请参阅你的服务的 API 文档。
发送正文#
如果你需要随 API 请求发送正文,请打开此选项。
然后选择最符合你希望发送的正文内容格式的正文内容类型。
Form URLencoded#
使用此选项将正文作为 application/x-www-form-urlencoded 发送。
指定正文使用以下可用选项之一:
- 使用下面的字段:输入正文参数的名称/值对。要输入更多正文参数名称/值对,请选择添加参数。名称应该是表单字段名称,值是你希望将该字段设置为的内容。
- 使用单个字段:在单个正文参数中输入名称/值对,格式为
fieldname1=value1&fieldname2=value2。
有关详细指导,请参阅你的服务的 API 文档。
Form-Data#
使用此选项将正文作为 multipart/form-data 发送。
通过选择参数类型来配置正文参数:
- 选择表单数据以输入名称/值对。
- 选择 n8n 二进制文件以从节点可以访问的文件中提取正文。
- 名称:输入要设置的字段的 ID。
- 输入数据字段名称:输入包含你想要处理的二进制文件数据的传入字段的名称。
选择添加参数以输入更多参数。
有关详细指导,请参阅你的服务的 API 文档。
JSON#
使用此选项将正文作为 JSON 发送。
指定正文使用以下可用选项之一:
- 使用下面的字段:输入正文参数的名称/值对。要输入更多正文参数名称/值对,请选择添加参数。
- 使用 JSON:输入 JSON 来定义正文。
有关详细指导,请参阅你的服务的 API 文档。
n8n 二进制文件#
使用此选项将存储在 n8n 中的文件内容作为正文发送。
输入包含文件的传入字段的名称作为输入数据字段名称。
有关如何格式化文件的详细指导,请参阅你的服务的 API 文档。
Raw(原始)#
使用此选项在正文中发送原始数据。
- 内容类型:输入用于原始正文内容的
Content-Type标头。有关 MIME 内容类型的完整列表,请参阅 IANA 媒体类型文档。 - 正文:输入要发送的原始正文内容。
有关详细指导,请参阅你的服务的 API 文档。
节点选项#
选择添加选项以查看和选择这些选项。除非另有说明,否则选项适用于所有参数。
查询参数中的数组格式#
选项可用性
此选项仅在打开发送查询参数时可用。
使用此选项控制查询参数中包含的数组的格式。从以下选项中选择:
- 无括号:数组将格式化为数组中每个项目的 name=value,例如:
foo=bar&foo=qux。 - 仅括号:节点在每个数组名称后添加方括号,例如:
foo[]=bar&foo[]=qux。 - 带索引的括号:节点在每个数组名称后添加带有索引值的方括号,例如:
foo[0]=bar&foo[1]=qux。
有关使用哪个选项的指导,请参阅你的服务的 API 文档。
批处理#
控制如何批处理大量输入项:
- 每批项目数:输入每批中要包含的输入项数。
- 批处理间隔:输入每批请求之间等待的时间(以毫秒为单位)。输入 0 表示无批处理间隔。
忽略 SSL 问题#
默认情况下,n8n 仅在 SSL 证书验证成功时下载响应。如果你希望即使 SSL 证书验证失败也下载响应,请打开此选项。
小写标头#
选择是否将标头名称小写(打开,默认)或不小写(关闭)。
重定向#
选择是否遵循重定向(默认打开)或不遵循(关闭)。如果打开,请在最大重定向数中输入请求应遵循的最大重定向数。
响应#
使用此选项设置有关预期 API 响应的一些详细信息,包括:
- 包含响应标头和状态:默认情况下,节点仅返回正文。打开此选项以返回完整响应(标头和响应状态代码)以及正文。
- 永不出错:默认情况下,节点仅在响应返回 2xx 代码时返回成功。打开此选项以返回成功,无论返回什么代码。
- 响应格式:选择返回数据的格式。从以下选项中选择:
- 自动检测(默认):节点根据返回的数据检测并格式化响应。
- 文件:选择此选项将响应放入文件中。在将输出放入字段中输入你希望返回文件的字段名称。
- JSON:选择此选项将响应格式化为 JSON。
- 文本:选择此选项将响应格式化为纯文本。在将输出放入字段中输入你希望返回文件的字段名称。
分页#
使用此选项对结果进行分页,对于处理 API 无法在单次调用中返回的过大查询结果很有用。
首先检查 API 数据
某些分页选项需要了解你正在使用的 API 返回的数据。在设置分页之前,请检查 API 文档,或在不使用分页的情况下进行 API 调用,以查看它返回的数据。
理解分页
分页意味着将大量数据 拆分为多个页面。每个页面上的数据量取决于你设置的限制。
例如,你对名为 /users 的端点进行 API 调用。API 想要发送回 300 个用户的信息,但这对于 API 在一个响应中发送来说数据太多了。
如果 API 支持分页,你可以增量获取数据。为此,你使用分页限制和页码或 URL 调用 /users,以告诉 API 发送哪个页面。在此示例中,假设你使用限制为 10,并从第 0 页开始。API 在其响应中发送前 10 个用户。然后你再次调用 API,将页码增加 1,以获取接下来的 10 个结果。
配置分页设置:
- 分页模式:
- 关闭:关闭分页。
- 在每个请求中更新参数:当你需要为每个请求动态设置参数时使用此选项。
- 响应包含下一个 URL:当 API 响应包含下一页的 URL 时使用此选项。使用表达式设置下一个 URL。
有关示例设置,请参阅 HTTP Request 节点手册 | 分页。
n8n 提供了在使用分页时处理 HTTP 节点请求和响应的内置变量:
| 变量 | 描述 |
|---|---|
$pageCount | 分页计数。跟踪节点已获取的页面数。 |
$request | HTTP 节点发送的请求对象。 |
$response | HTTP 调用的响应对象。包括 $response.body、$response.headers 和 $response.statusCode。body 和 headers 的内容取决于 API 发送的数据。 |
API 差异
不同的 API 以不同的方式实现分页。有关详细信息,请查看你正在使用的 API 的 API 文档。你需 要找出以下内容:
- API 是否提供下一页的 URL?
- 页面大小或页码是否有 API 特定的限制?
- API 返回的数据的结构。
代理#
如果需要指定 HTTP 代理,请使用此选项。
输入请求应使用的代理。这优先于使用 HTTP_PROXY、HTTPS_PROXY 或 ALL_PROXY 环境变量定义的全局设置。
超时#
使用此选项设置节点应等待服务器发送响应标头(并开始响应正文)的时间。节点会中止超过此初始响应值的请求。
输入等待的超时时间(以毫秒为单位)。
仅工具选项#
优化响应#
是否优化工具响应以减少传递给 LLM 的数据量。优化响应可以降低成本,并可以帮助 LLM 忽略不重要的细节,通常会带来更好的结果。
优化响应时,你选择预期的响应类型,这决定了你可以配置的其他选项。支持的响应类型有:
JSON#
当期望 JSON 响应时,你可以使用以下选项配置要用作响应的 JSON 数据的哪些部分:
- 包含数据的字段:此字段标识包含相关数据的 JSON 对象的特定部分。你可以将其留空以使用整个响应。
- 包含字段:这是你选择响应对象中想要的字段的方式。有三个选择:
- 全部:包含响应对象中的所有字段。
- 已选择:仅包含下面指定的字段。
- 字段:要包含在响应中的字段的逗号分隔列表。你可以使用点表示法指定嵌套字段。你可以从输入面板拖动字段以将它们添加到字段列表中。
- 排除:包含所有字段,除了下面指定的字段。
- 字段:要从响应中排除的字段的逗号分隔列表。你可以使用点表示法指定嵌套字段。你可以从输入面板拖动字段以将它们添加到字段列表中。
HTML#
当期望 HTML 时,你可以识别与 LLM 相关的 HTML 文档的部分,并使用以下选项优化响应:
- 选择器(CSS):要包含在响应 HTML 中的特定元素或元素类型。默认使用
body元素。 - 仅返回内容:是否从响应中剥离 HTML 标签和属性,仅保留实际内容。这使用更少的令牌,并且可能更容易让模型理解。
- 要省略的元素:提取内容时要排除的 CSS 选择器的逗号分隔列表。
- 截断响应:是否限制响应大小以节省令牌。
- 最大响应字符数:HTML 响应中要包含的最大字符数。默认值为 1000。
Text(文本)#
当期望通用文本响应时,你可以使用以下选项优化结果:
- 截断响应:是否限制响应大小以节省令牌。
- 最大响应字符数:HTML 响应中要包含的最大字符数。默认值为 1000。
导入 curl 命令#
curl 是一个用于使用 URL 传输数据的命令行工具和库。
你可以使 用 curl 调用 REST API。如果你想要使用的服务的 API 文档提供了 curl 示例,你可以将它们从文档中复制到 n8n 中以配置 HTTP Request 节点。
导入 curl 命令:
- 从 HTTP Request 节点的参数选项卡中,选择 Import cURL。导入 cURL 命令模态框打开。
- 将 curl 命令粘贴到文本框中。
- 选择导入。n8n 将请求配置加载到节点字段中。这将覆盖任何现有配置。
模板和示例#
构建你的第一个 WhatsApp 聊天机器人
作者:Jimleuk
使用 AI 抓取和总结网页
作者:n8n Team
使用 Seedance 生成 AI 病毒视频并上传到 TikTok、YouTube 和 Instagram
作者:Dr. Firas