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 端点、必要参数以及认证方法。
您可以选择以下认证方式之一:
- 基础认证(Basic auth)
- 自定义认证(Custom auth)
- 摘要认证(Digest auth)
- 头部认证(Header auth)
- OAuth1 API
- OAuth2 API
- 查询参数认证(Query auth)
有关每种凭据类型的设置详情,请参阅 HTTP 请求凭据。
发送查询参数#
查询参数作为 HTTP 请求的过滤器使用。如果您调用的 API 支持查询参数且当前请求需要过滤条件,请启用此选项。
指定查询参数的方式有以下两种:
- 使用下方字段:输入查询参数的名称/值对。如需添加更多参数,请点击添加参数。名称代表您要过滤的字段名,值代表过滤条件。
- 使用 JSON:通过输入 JSON 格式来定义查询参数。
具体参数要求请参考您所使用服务的 API 文档。
发送请求头#
此参数用于在请求中附加头部信息。请求头包含关于请求的元数据或上下文信息。
指定请求头的方式有以下两种:
- 使用下方字段:输入头部参数的名称/值对。如需添加更多头部参数,请点击添加参数。名称代表您要设置的头部字段,值代表该字段的对应值。
- 使用 JSON:通过输入 JSON 格式来定义头部参数。
具体头部要求请参考您所使用服务的 API 文档。
发送请求体#
如需在 API 请求中包含请求体内容,请启用此选项。
然后选择与您要发送的内容格式最匹配的请求体内容类型。
URL 编码表单#
使用此选项以 application/x-www-form-urlencoded
格式发送请求体。
指定请求体的方式有以下两种:
- 使用下方字段:输入名称/值对的请求体参数。如需添加更多参数对,请选择添加参数。名称应为表单字段名,值则是您希望设置的字段值。
- 使用单一字段:在请求体参数中以
字段名1=值1&字段名2=值2
格式输入您的名称/值对。
具体操作请参考您所使用服务的 API 文档。
表单数据#
使用此选项以 multipart/form-data
格式发送请求体。
通过选择参数类型来配置您的请求体参数:
- 选择表单数据以输入名称/值对
- 选择n8n 二进制文件可从节点可访问的文件中提取请求体内容
- 名称:输入要设置的字段 ID
- 输入数据字段名:输入包含待处理二进制文件数据的输入字段名称
选择添加参数可输入更多参数。
具体操作请参考您所使用服务的 API 文档。
JSON#
使用此选项以 JSON 格式发送请求体。
指定请求体的方式有以下两种:
- 使用下方字段:输入名称/值对的请求体参数。如需添加更多参数对,请选择添加参数。
- 使用 JSON:直接输入JSON 来定义请求体。
具体操作请参考您所使用服务的 API 文档。
n8n 二进制文件#
使用此选项以 n8n 中存储的文件内容作为请求体。
在输入数据字段名中输入包含文件的输入字段名称。
关于文件格式的具体要求,请参考您所使用服务的 API 文档。
Raw(原始数据)#
使用此选项发送原始数据作为请求体。
- Content Type:输入用于原始请求体内容的
Content-Type
头部。完整 MIME 内容类型列表请参考 IANA 的 媒体类型 文档。 - Body:输入要发送的原始请求体内容。
详细指导请参考您所用服务的 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 支持分页,您可以逐步获取数据。具体做法是:使用分页限制值和页码(或 URL)调用 /users
,告知 API 需要返回哪个页面的数据。假设您设置限制值为 10 并从第 0 页开始,API 会在响应中返回前 10 个用户。然后您再次调用 API 并将页码加 1,即可获取接下来的 10 条结果。
配置分页设置:
- 分页模式:
- 关闭:禁用分页功能。
- 每次请求更新参数:当需要为每次请求动态设置参数时使用此模式。
- 响应包含下一页 URL:当 API 响应中包含下一页 URL 时使用此模式。使用表达式设置 下一页 URL。
具体配置示例请参考 HTTP 请求节点使用手册 | 分页功能。
n8n 在使用分页时提供了以下内置变量用于处理 HTTP 节点的请求和响应:
变量 | 描述 |
---|---|
$pageCount |
分页计数。跟踪节点已获取的页数。 |
$request |
HTTP 节点发送的请求对象。 |
$response |
HTTP 调用的响应对象。包含 $response.body 、$response.headers 和 $response.statusCode 。body 和 headers 的内容取决于 API 发送的数据。 |
/// 注意 | API 差异 不同的 API 以不同方式实现分页功能。请查阅您所用 API 的文档以获取详细信息。您需要了解以下内容:
- API 是否提供下一页的 URL?
- 是否存在 API 特定的页面大小或页码限制?
- API 返回数据的结构。 ///
代理设置#
当需要指定 HTTP 代理时使用此选项。
输入请求应使用的代理地址。
超时设置#
此选项用于设置节点等待服务器发送响应头(并开始响应主体)的最长时间。对于超过该值的初始响应,节点将中止请求。
输入等待的超时时间(毫秒)。
仅工具选项#
优化响应#
是否优化工具响应以减少传递给LLM的数据量。优化响应可以降低成本,并帮助LLM忽略不重要的细节,通常能获得更好的结果。
优化响应时,您需要选择预期的响应类型,这将决定您可以配置的其他选项。支持的响应类型包括:
JSON#
当期望获取 JSON 响应时,您可以通过以下选项配置要使用的 JSON 数据部分:
- 包含数据的字段:该字段用于标识 JSON 对象中包含相关数据的特定部分。留空则表示使用整个响应。
- 包含字段:用于选择响应对象中需要包含的字段。有三种选择:
- 全部:包含响应对象中的所有字段。
- 选定:仅包含下方指定的字段。
- 字段:以逗号分隔的字段列表,用于指定要包含在响应中的字段。可以使用点表示法指定嵌套字段。您可以从输入面板拖动字段添加到字段列表中。
- 排除:包含除下方指定字段外的所有字段。
- 字段:以逗号分隔的字段列表,用于指定要从响应中排除的字段。可以使用点表示法指定嵌套字段。您可以从输入面板拖动字段添加到字段列表中。
HTML#
当期望获取 HTML 响应时,您可以通过以下选项识别 HTML 文档中与 LLM 相关的部分并优化响应:
- 选择器 (CSS):指定要包含在响应 HTML 中的特定元素或元素类型。默认使用
body
元素。 - 仅返回内容:是否从响应中去除 HTML 标签和属性,仅保留实际内容。这会减少 token 使用量,可能更易于模型理解。
- 要忽略的元素:以逗号分隔的 CSS 选择器列表,用于指定提取内容时要排除的元素。
- 截断响应:是否限制响应大小以节省 token。
- 最大响应字符数:HTML 响应中包含的最大字符数。默认值为 1000。
文本#
当预期获取通用的文本响应时,您可以通过以下选项优化结果:
- 截断响应:是否限制响应大小以节省 token 使用量。
- 最大响应字符数:HTML 响应中包含的最大字符数。默认值为 1000。
导入 curl 命令#
curl 是一个用于通过 URL 传输数据的命令行工具和库。
您可以使用 curl 调用 REST API。如果目标服务的 API 文档提供了 curl 示例,您可以直接从文档复制到 n8n 中配置 HTTP 请求节点。
导入 curl 命令的步骤:
- 在 HTTP 请求节点的参数选项卡中,选择导入 cURL。此时会打开导入 cURL 命令模态框。
- 将 curl 命令粘贴到文本框中。
- 选择导入。n8n 会将请求配置加载到节点字段中,这会覆盖现有配置。
模板与示例#
常见问题#
关于常见问题或错误及其解决方案,请参阅常见问题。