HTTP请求节点#
HTTP请求节点是n8n中最通用的节点之一。它允许您通过REST API向任何应用程序或服务发起HTTP请求以查询数据。您可以将HTTP请求节点作为常规节点使用,或将其附加到AI智能体上作为工具使用。
使用此节点时,您正在创建一个REST API调用。您需要对基本的API术语和概念有一定了解。
有两种方式可以创建HTTP请求:配置节点参数或导入curl命令。
Credentials
请参考HTTP请求凭据获取设置身份验证的指南。
节点参数#
方法#
选择用于请求的方法:
- DELETE
- GET
- HEAD
- 选项
- PATCH
- POST
- PUT
URL#
输入您想要使用的端点。
认证#
n8n推荐在可用时使用预定义凭证类型选项。与配置通用凭证相比,它提供了更简单的设置和管理凭证的方式。
预定义凭证#
n8n支持的集成凭证,包括内置节点和社区节点。使用预定义凭证类型可无需额外设置即可进行自定义操作。更多信息请参阅自定义API操作。
通用凭证#
n8n不支持的集成所需的凭据。您需要手动配置认证流程,包括指定所需的API端点、必要参数以及认证方法。
您可以选择以下方法之一:
- 基本认证
- 自定义认证
- 摘要认证
- 头部认证
- OAuth1 API
- OAuth2 API
- 查询认证
有关设置每种凭证类型的更多信息,请参阅HTTP请求凭证。
发送查询参数#
查询参数作为HTTP请求的过滤器。如果您交互的API支持查询参数,并且您发出的请求需要过滤条件,请启用此选项。
指定您的查询参数,可使用以下任一选项:
- 使用下方字段: 输入查询参数的名称/值对。如需添加更多查询参数名称/值对,请选择添加参数。名称是您要筛选的字段名,值则是筛选条件值。
- 使用JSON: 输入JSON来定义您的查询参数。
请参考您服务的API文档以获取详细指导。
发送请求头#
使用此参数发送请求头。请求头包含有关请求的元数据或上下文信息。
指定请求头 使用以下任一可用选项:
- 使用下方字段: 输入名称/值对作为头部参数。如需添加更多头部参数名称/值对,请选择添加参数。名称代表您想设置的头部字段,值则是您想为该头部字段传递的值。
- 使用JSON: 输入JSON来定义您的头部参数。
请参考您服务的API文档以获取详细指导。
发送正文#
如果需要在API请求中发送请求体,请开启此选项。
然后选择正文内容类型,该类型应与您希望发送的正文内容格式最匹配。
表单URL编码#
使用此选项将您的请求体以application/x-www-form-urlencoded格式发送。
指定请求体 使用以下可用选项之一:
- 使用下方字段: 输入Body Parameters的名称/值对。如需添加更多参数名称/值对,请选择添加参数。名称应为表单字段名称,值则是您希望为该字段设置的值。
- 使用单个字段: 在单个Body参数中输入您的名称/值对,格式为
fieldname1=value1&fieldname2=value2。
请参考您服务的API文档以获取详细指导。
表单数据#
使用此选项将您的正文作为multipart/form-data发送。
通过选择参数类型来配置您的请求体参数:
- 选择表单数据来输入名称/值对。
- Choose n8n Binary File to pull the body from a file the node has access to.
- 名称: 输入要设置的字段ID。
- 输入数据字段名称: 输入包含您要处理的二进制文件数据的传入字段名称。
选择添加参数以输入更多参数。
请参考您服务的API文档以获取详细指导。
JSON#
使用此选项将您的请求体以JSON格式发送。
指定请求体,可使用以下任一选项:
- 使用下方字段: 输入名称/值对的请求体参数。如需添加更多请求体参数名称/值对,请选择添加参数。
- 使用JSON: 输入JSON来定义请求体。
请参考您服务的API文档以获取详细指导。
n8n 二进制文件#
使用此选项可将存储在n8n中的文件内容作为正文发送。
在输入数据字段名称中输入包含文件的传入字段名称。
请参考您服务的API文档,了解如何格式化文件的详细指南。
原始#
使用此选项在请求体中发送原始数据。
- 内容类型: 输入用于原始正文内容的
Content-Type头部。完整MIME内容类型列表请参考IANA 媒体类型文档。 - Body: 输入要发送的原始正文内容。
请参考您服务的API文档以获取详细指导。
节点选项#
选择添加选项以查看并选择这些选项。除非另有说明,否则所有参数均可使用这些选项。
查询参数中的数组格式#
选项可用性
此选项仅在开启发送查询参数时可用。
使用此选项控制查询参数中包含的数组格式。可从以下选项中选择:
- 无括号: 数组将格式化为数组中每个项目的名称=值,例如:
foo=bar&foo=qux. - 仅方括号: 节点在每个数组名称后添加方括号,例如:
foo[]=bar&foo[]=qux。 - 带索引的方括号: 节点会在每个数组名称后添加带索引值的方括号,例如:
foo[0]=bar&foo[1]=qux。
请参考您服务的API文档以获取关于使用哪个选项的指导。
批处理#
控制如何批量处理大量输入项:
- 每批次项目数: 输入每个批次中包含的输入项目数量。
- 批处理间隔: 输入每批请求之间的等待时间(毫秒)。输入0表示无批处理间隔。
忽略SSL问题#
默认情况下,n8n仅在SSL证书验证成功时下载响应。如果您希望在SSL证书验证失败时也下载响应,请启用此选项。
小写标题#
选择是否将标头名称转换为小写(开启,默认)或不转换(关闭)。
重定向#
选择是否跟随重定向(默认开启)或关闭。如果开启,请在最大重定向次数中输入请求应跟随的最大重定向次数。
响应#
使用此选项设置有关预期API响应的一些详细信息,包括:
- 包含响应头和状态码: 默认情况下,该节点仅返回响应体。启用此选项可同时返回完整响应(包括响应头和状态码)以及响应体。
- 永不报错: 默认情况下,节点仅在响应返回2xx状态码时才会返回成功。开启此选项后,无论返回什么状态码都会返回成功。
- Response Format: Select the format in which the data gets returned. Choose from:
- 自动检测 (默认): 节点会根据返回的数据自动检测并格式化响应。
- 文件: 选择此选项可将响应存入文件。在输出存入字段中输入您希望返回文件的字段名称。
- JSON: 选择此选项以JSON格式返回响应。
- 文本: 选择此选项以纯文本格式返回响应。在输出字段中输入您希望文件返回的字段名称。
分页#
使用此选项对结果进行分页,适用于处理因数据量过大而无法通过API单次调用返回的查询结果。
首先检查API数据
分页的一些选项需要了解您所使用的API返回的数据。在设置分页之前,请先查阅API文档,或者执行一个不带分页的API调用,以查看其返回的数据。
Understand pagination
分页是指将大量数据分割成多个页面。每个页面的数据量取决于您设置的limit。
例如,您对一个名为/users的端点进行API调用。该API希望返回300个用户的信息,但对于API来说,一次性发送这么多数据量过大。
如果API支持分页功能,您可以逐步获取数据。为此,您需要调用/users接口并传入分页限制参数,同时通过页码或URL告知API需要返回哪一页数据。在本示例中,假设您使用限制值为10并从第0页开始,API将在响应中返回前10个用户数据。然后您再次调用API,将页码增加1,即可获取接下来的10条结果。
配置分页设置:
- Pagination Mode:
- 关闭: 关闭分页功能。
- 在每个请求中更新参数: 当您需要为每个请求动态设置参数时使用此功能。
- 响应包含下一页URL: 当API响应中包含下一页的URL时使用此选项。使用表达式设置下一页URL。
有关示例设置,请参阅 HTTP Request node cookbook | Pagination。
n8n提供了内置变量,用于在使用分页时处理HTTP节点请求和响应:
| 变量 | 描述 |
|---|---|
$pageCount |
The pagination count. Tracks how many pages the node has fetched. |
$request |
The request object sent by the HTTP node. |
$response |
The response object from the HTTP call. Includes $response.body, $response.headers, and $response.statusCode. The contents of body and headers depend on the data sent by the API. |
API差异
不同的API以不同的方式实现分页功能。请查阅您所使用的API文档以获取详细信息。您需要了解的内容包括:
- API是否提供了下一页的URL?
- API是否有特定的页面大小或页码限制?
- API返回的数据结构。
代理#
如果需要指定HTTP代理,请使用此选项。
输入请求应使用的代理。
超时#
使用此选项设置节点应等待服务器发送响应头(并开始响应体)的时间。节点将中止初始响应超过此值的请求。
输入超时等待时间(毫秒)。
仅工具选项#
优化响应#
是否优化工具响应以减少传递给LLM的数据量。优化响应可以降低成本,并帮助LLM忽略不重要的细节,通常能带来更好的结果。
优化响应时,您需要选择预期的响应类型,这将决定您可以配置的其他选项。支持的响应类型包括:
JSON#
当期望获得JSON响应时,您可以通过以下选项配置要使用JSON数据的哪些部分作为响应:
- 包含数据的字段: 此字段用于标识JSON对象中包含相关数据的特定部分。如果留空,则将使用整个响应。
- Include Fields: This is how you choose which fields you want in your response object. There are three choices:
- 全部: 在响应对象中包含所有字段。
- Selected: Include only the fields specified below.
- 字段: 响应中包含的字段列表,以逗号分隔。您可以使用点表示法指定嵌套字段。您可以从输入面板拖动字段将其添加到字段列表中。
- Exclude: Include all fields except the fields specified below.
- 字段: 要从响应中排除的字段的逗号分隔列表。您可以使用点符号指定嵌套字段。您可以从输入面板拖动字段将其添加到字段列表中。
HTML#
When expecting HTML, you can identify the part of an HTML document relevant to the LLM and optimize the response with the following options:
- Selector (CSS): A specific element or element type to include in the response HTML. Uses the
bodyelement by default. - Return Only Content: Whether to strip HTML tags and attributes from the response, leaving only the actual content. This uses fewer tokens and may be easier for the model to understand.
- 要忽略的元素: 提取内容时需要排除的CSS选择器列表,以逗号分隔。
- Truncate Response: Whether to limit the response size to save tokens.
- Max Response Characters: The maximum number of characters to include in the HTML response. The default value is 1000.
文本#
当预期获得通用的文本响应时,您可以通过以下选项优化结果:
- Truncate Response: Whether to limit the response size to save tokens.
- Max Response Characters: The maximum number of characters to include in the HTML response. The default value is 1000.
导入curl命令#
curl 是一个用于通过URL传输数据的命令行工具和库。
你可以使用curl来调用REST API。如果目标服务的API文档提供了curl示例,你可以直接从文档中复制这些示例到n8n中配置HTTP请求节点。
导入curl命令:
- 在HTTP请求节点的参数选项卡中,选择导入cURL。此时会打开导入cURL命令模态窗口。
- 将您的curl命令粘贴到文本框中。
- 选择导入。n8n会将请求配置加载到节点字段中,这将覆盖任何现有配置。
模板和示例#
常见问题#
有关常见问题或疑问及建议解决方案,请参阅常见问题。