菜单

HTTP 请求节点

相关源文件

HTTP 请求节点是 n8n 的核心组件,允许工作流向外部 API 和服务发送 HTTP 请求。该节点支持各种 HTTP 方法、身份验证类型和响应格式,使其能够与几乎任何 Web 服务集成。

目的与范围

本文档涵盖了 HTTP 请求节点的架构、功能和实现细节。它解释了节点如何处理不同的请求方法、身份验证机制和响应处理。有关特定 API 集成的更多信息,请参阅这些服务的相关节点文档。

概述

HTTP 请求节点实现为带版本控制的节点类型,具有多个版本(1、2、3、4、4.1 和 4.2),它们共享核心功能但提供不同的功能和接口。该节点允许用户

  • 使用各种方法(GET、POST、PUT、DELETE 等)发出 HTTP 请求
  • 配置请求参数、标头和正文内容
  • 使用不同方法进行身份验证(基本身份验证、OAuth、API 密钥等)
  • 处理不同格式的响应(JSON、文本、二进制文件)
  • 处理返回分块数据的 API 端点的分页

来源

节点结构

HTTP 请求节点实现为一个版本化的节点类型,主类 HttpRequest 扩展了 VersionedNodeType。这允许在添加新功能的同时保持向后兼容性。

来源

核心功能

HTTP 请求节点的核心功能实现在每个版本类的 execute 方法中。最新版本(V3)功能最丰富,用于节点的 3、4、4.1 和 4.2 版本。

请求配置

用户可以配置 HTTP 请求的以下方面

  1. HTTP 方法:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS
  2. URL:请求的端点
  3. 身份验证:无、预定义凭据类型或通用凭据类型
  4. 标头:随请求发送的自定义 HTTP 标头
  5. 查询参数:要附加到请求的 URL 参数
  6. 正文:支持正文的方法(POST、PUT、PATCH)的请求正文
  7. SSL 证书:可选的 SSL 证书用于安全连接

来源

身份验证处理

该节点支持多种身份验证方法

  1. :无身份验证
  2. 预定义凭据类型:使用 n8n 内置的特定服务凭据类型
  3. 通用凭据类型:使用通用的身份验证方法
    • 基本身份验证
    • Bearer 身份验证
    • Digest 身份验证
    • Header 身份验证
    • Query 身份验证
    • OAuth1
    • OAuth2
    • 自定义身份验证

身份验证逻辑实现在 execute 方法中,在此方法中检索相应的凭据并将其应用于请求选项。

来源

请求执行

该节点使用 n8n 的辅助函数执行 HTTP 请求

  1. request:用于基本请求,无需身份验证
  2. requestOAuth1:用于 OAuth1 身份验证请求
  3. requestOAuth2:用于 OAuth2 身份验证请求
  4. requestWithAuthentication:用于使用预定义凭据类型的请求
  5. requestWithAuthenticationPaginated:用于分页请求

请求执行在 execute 方法中处理,该方法处理每个输入项并发出相应的 HTTP 请求。

来源

响应处理

该节点可以处理不同格式的响应

  1. JSON:将响应解析为 JSON
  2. 文本:将响应作为文本返回
  3. 文件:将响应保存为二进制文件

响应格式可以

  • 基于 Content-Type 标头自动检测
  • 由用户显式指定

此外,该节点还可以返回

  • 仅响应正文(默认)
  • 包括标头、状态码等的完整响应。

来源

高级特性

分页

HTTP 请求节点支持分页,以处理返回分块数据的 API。分页选项包括

  1. 更新每次请求的参数:自动更新参数(在正文、标头或查询中)以用于后续请求
  2. 响应包含下一条 URL:使用响应中的 URL 进行下一次请求
  3. 分页完成条件:定义何时停止分页(空响应、特定状态码或自定义表达式)

来源

二进制数据处理

该节点可以

  1. 将二进制数据作为请求正文发送
  2. 处理二进制响应并将其保存为二进制数据
  3. 处理带有二进制内容的 multipart/form-data 上传

来源

响应优化

对于 AI 工具的使用,该节点包含了可以

  1. 从 JSON 响应中提取特定数据
  2. 从 HTML 响应中提取文本内容
  3. 将 HTML 转换为纯文本
  4. 将响应截断到最大长度

来源

实现细节

请求选项配置

该节点构建一个请求选项对象,其中包含

  • HTTP 方法
  • URL
  • 查询参数
  • 正文内容
  • 身份验证详细信息
  • SSL 证书
  • 其他选项(超时、代理等)

此配置在 execute 方法中完成,其中参数从节点 UI 检索并处理以创建请求选项。

来源

身份验证实现

该节点通过修改请求选项对象来实现各种身份验证方法

  1. 基本身份验证:添加 auth 属性,包含用户名和密码
  2. Bearer 身份验证:添加 Authorization 标头和 Bearer 令牌
  3. Digest 身份验证:添加 auth 属性,包含用户名、密码和 sendImmediately: false
  4. Header 身份验证:添加自定义标头
  5. Query 身份验证:将参数添加到查询字符串
  6. 自定义身份验证:添加自定义标头、正文或查询参数
  7. OAuth1:使用 requestOAuth1 辅助函数
  8. OAuth2:使用 requestOAuth2 辅助函数

来源

响应处理实现

该节点根据配置的响应格式处理响应

  1. JSON: 将响应解析为 JSON
  2. Text: 将响应作为文本返回
  3. File: 将响应保存为二进制文件

对于自动检测格式,节点会检查 Content-Type 标头以确定适当的格式。

来源

使用示例

基础 GET 请求

从 API 检索数据的简单 GET 请求

Method: GET
URL: https://api.example.com/data

带 JSON 主体的 POST 请求

向 API 发送 JSON 数据

Method: POST
URL: https://api.example.com/create
Body Content Type: JSON
Body:
{
  "name": "Example",
  "value": 123
}

已认证请求

进行带身份验证的请求

Method: GET
URL: https://api.example.com/protected
Authentication: Basic Auth
  Username: user
  Password: pass

文件下载

下载文件并将其保存为二进制数据

Method: GET
URL: https://example.com/file.pdf
Response Format: File
Output Field: data

分页请求

从分页 API 检索所有数据页

Method: GET
URL: https://api.example.com/items
Pagination: Update a Parameter in Each Request
  Parameter: page (query)
  Value: ==$parameter.page + 1
Pagination Complete When: Response is Empty

与 GraphQL 节点的比较

虽然 HTTP 请求节点是用于发出任何 HTTP 请求的通用节点,但 n8n 还提供了一个专门的 GraphQL 节点用于发出 GraphQL 查询。GraphQL 节点基于相似的原理构建,但针对 GraphQL 特定功能进行了优化

来源

结论

HTTP 请求节点是 n8n 的一个多功能且强大的组件,它使工作流能够与外部 API 和服务进行交互。它支持各种 HTTP 方法、身份验证机制和响应格式,使其适用于广泛的集成场景。该节点的版本化实现确保了向后兼容性,同时也允许在较新版本中添加新功能。