【n8n教程】:HTTP Request节点,轻松调用任何API!🚀

n8n的HTTP Request节点是连接外部API的万能钥匙。掌握它,你就能集成几乎任何Web服务!本教程将通过循序渐进的讲解和实操案例,让你从零到精通。


什么是HTTP Request节点?

HTTP Request节点 是n8n中最强大的核心节点之一。它允许你通过HTTP请求与任何REST API通信,实现数据的获取、创建、更新和删除操作。

为什么你需要它?


核心概念:HTTP方法

在使用HTTP Request节点前,你需要理解4个关键的HTTP方法:

方法用途CRUD对应示例
GET读取数据ReadGET /users/123
POST创建新资源CreatePOST /users (+body)
PUT更新整个资源UpdatePUT /users/123 (+body)
DELETE删除资源DeleteDELETE /users/123

💡 记忆技巧:GET读、POST创、PUT更、DELETE删。


快速上手:5分钟创建第一个API请求

步骤1:添加HTTP Request节点

  1. 1. 打开n8n工作流编辑器
  2. 2. 点击 + 按钮,搜索 "HTTP Request"
  3. 3. 选择 HTTP Request 节点添加到画布

步骤2:配置基础参数

以获取公共API数据为例(使用JSONPlaceholder测试API):

参数说明
MethodGET获取数据
URLhttps://jsonplaceholder.typicode.com/posts/1API端点
AuthenticationNone公共API不需要认证

步骤3:测试请求

  1. 1. 点击 Execute Node 按钮
  2. 2. 右侧会显示API返回的响应数据
  3. 3. 你会看到包含userIdidtitlebody等字段的JSON数据

恭喜! 你已经成功调用了第一个API!


深入学习:核心参数详解

1. Method(请求方法)

选择合适的HTTP方法:

2. URL(API端点)

这是API的完整地址。例如:


    
    
    
  https://api.example.com/v1/users

动态URL:使用表达式引用前面节点的数据:


    
    
    
  https://api.example.com/users/{{ $json.userId }}

3. Authentication(认证)

根据API要求选择认证方式:

✅ 预定义认证(推荐)

如果n8n内置了某个服务的认证,直接使用。

🔑 Bearer Token(常用)


    
    
    
  Authorization: Bearer your_api_token_here

📝 Basic Auth


    
    
    
  Authorization: Basic base64(username:password)

4. Send Query Parameters(查询参数)

添加URL查询参数来过滤或搜索数据。

示例:获取userId=1的所有帖子


    
    
    
  https://jsonplaceholder.typicode.com/posts?userId=1

在n8n中配置

  1. 1. 开启 Send Query Parameters
  2. 2. 添加参数对:
    • Name: userId
    • Value: 1

5. Send Headers(请求头)

某些API要求特定的请求头。

常见请求头


    
    
    
  Content-Type: application/json
Authorization: Bearer token
User-Agent: n8n

6. Send Body(请求体)

用于POST、PUT等需要发送数据的请求。

JSON格式(最常用)


    
    
    
  {
  "title"
: "新帖子",
  "body"
: "这是内容",
  "userId"
: 1
}

动态JSON:结合前面节点的数据


    
    
    
  {
  "title"
: "{{ $json.title }}",
  "body"
: "{{ $json.body }}"
}

Form Data(文件上传)

选择 Form-Data 格式上传文件。


常见问题排查

❌ 错误:"Bad request - please check your parameters"

原因:查询参数或请求体格式不正确

解决

  1. 1. 检查参数名称和值是否拼写正确
  2. 2. 验证数据类型(数字不需要引号,字符串需要)
  3. 3. 参考API官方文档

❌ 错误:"The resource you are requesting could not be found"

原因:URL端点无效

解决

  1. 1. 确认URL拼写无误
  2. 2. 检查API文档是否已弃用该端点
  3. 3. 用Postman等工具测试URL

❌ 错误:"Forbidden - perhaps check your credentials"

原因:认证失败,权限不足

解决

  1. 1. 验证API密钥或Token是否正确
  2. 2. 检查该凭证是否有所需权限/作用域
  3. 3. 重新生成API密钥

❌ 错误:"429 - Too many requests"

原因:触发了API速率限制

解决(2种方法):

方法1:使用Batching(批处理)

  1. 1. 点击 Add Option > Batching
  2. 2. 设置 Items per Batch = 10(每批10个请求)
  3. 3. 设置 Batch Interval = 1000(间隔1000毫秒)

方法2:使用Retry on Fail(重试)

  1. 1. 进入节点 Settings
  2. 2. 启用 Retry on Fail
  3. 3. 设置 Max Tries = 3,Wait Between Tries = 2000ms

实战案例:获取天气数据工作流

现在让我们构建一个完整的实用工作流!这个工作流将获取指定城市的天气信息。

工作流说明

  1. 1. Manual Trigger → 手动触发工作流
  2. 2. HTTP Request → 调用天气API获取天气数据
  3. 3. 输出结果 → 显示温度、天气状况等

完整工作流JSON代码


    
    
    
  {
  "name"
: "获取天气信息",
  "nodes"
: [
    {

      "parameters"
: {},
      "id"
: "00ebe6e8-4bc4-4dd9-9d42-4d8a123456789",
      "name"
: "当点击执行工作流时",
      "type"
: "n8n-nodes-base.manualTrigger",
      "typeVersion"
: 1,
      "position"
: [250, 300]
    }
,
    {

      "parameters"
: {
        "url"
: "https://api.weatherapi.com/v1/current.json",
        "method"
: "GET",
        "sendQuery"
: true,
        "queryParameters"
: {
          "parameters"
: [
            {

              "name"
: "key",
              "value"
: "YOUR_API_KEY_HERE"
            }
,
            {

              "name"
: "q",
              "value"
: "Beijing"
            }
,
            {

              "name"
: "aqi",
              "value"
: "yes"
            }

          ]

        }
,
        "options"
: {}
      }
,
      "id"
: "c92a3d4f-8b4e-4e1a-9c5e-6f8g9h0i1j2k",
      "name"
: "获取天气",
      "type"
: "n8n-nodes-base.httpRequest",
      "typeVersion"
: 4.2,
      "position"
: [500, 300]
    }
,
    {

      "parameters"
: {
        "functionCode"
: "return {\n  city: $json.location.name,\n  country: $json.location.country,\n  temperature: $json.current.temp_c + '°C',\n  condition: $json.current.condition.text,\n  humidity: $json.current.humidity + '%',\n  windSpeed: $json.current.wind_kph + ' km/h'\n};"
      }
,
      "id"
: "d8e9f0a1-b2c3-4d4e-5f6g-7h8i9j0k1l2m",
      "name"
: "格式化天气数据",
      "type"
: "n8n-nodes-base.code",
      "typeVersion"
: 2,
      "position"
: [750, 300]
    }

  ]
,
  "connections"
: {
    "当点击执行工作流时"
: {
      "main"
: [
        [

          {

            "node"
: "获取天气",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }
,
    "获取天气"
: {
      "main"
: [
        [

          {

            "node"
: "格式化天气数据",
            "type"
: "main",
            "index"
: 0
          }

        ]

      ]

    }

  }
,
  "active"
: false,
  "settings"
: {
    "executionOrder"
: "v1"
  }

}

使用步骤

  1. 1. 获取API密钥
    • • 访问 WeatherAPI.com
    • • 注册免费账户获取API密钥
  2. 2. 导入工作流
    • • 在n8n工作流编辑器右上角找到 Import 按钮
    • • 粘贴上面的JSON代码
    • • 点击 Import
  3. 3. 配置API密钥
    • • 找到"获取天气"节点
    • • 将 YOUR_API_KEY_HERE 替换为你的实际API密钥
    • • 修改 q 参数中的城市名称
  4. 4. 运行测试
    • • 点击 Execute Workflow
    • • 在右侧查看返回的天气数据

输出示例


    
    
    
  {
  "city"
: "Beijing",
  "country"
: "China",
  "temperature"
: "15°C",
  "condition"
: "Partly cloudy",
  "humidity"
: "65%",
  "windSpeed"
: "12 km/h"
}

HTTP方法和CRUD操作详解

实际应用场景

📖 GET请求示例:查询用户信息


    
    
    
  方法:GET
URL:https://api.example.com/users/123
预期响应:返回用户ID为123的信息

✍️ POST请求示例:创建新评论


    
    
    
  方法:POST
URL:https://api.example.com/posts/1/comments
请求体:
{
  "text": "很好的文章!",
  "author": "张三"
}
预期响应:201 Created,返回新创建评论的ID

🔄 PUT请求示例:更新用户信息


    
    
    
  方法:PUT
URL:https://api.example.com/users/123
请求体:
{
  "name": "新名字",
  "email": "newemail@example.com",
  "phone": "13800000000"
}
预期响应:200 OK,返回更新后的用户信息

🗑️ DELETE请求示例:删除评论


    
    
    
  方法:DELETE
URL:https://api.example.com/comments/456
预期响应:204 No Content 或 200 OK

高级技巧

技巧1:使用Response Headers和Status Code

在某些场景下,你需要获取HTTP响应头和状态码(不仅仅是响应体)。

配置步骤

  1. 1. 打开 Add Option > Response
  2. 2. 勾选 Include Response Headers and Status
  3. 3. 现在输出会包含:

    
    
    
  {
  "body"
: { /* 响应内容 */ },
  "headers"
: { /* 响应头 */ },
  "statusCode"
: 200
}

技巧2:使用Never Error处理API错误

某些API可能返回4xx或5xx错误码,但你想继续工作流执行。

配置步骤

  1. 1. 打开 Add Option > Response
  2. 2. 勾选 Never Error
  3. 3. 错误响应也会被返回而不是中断工作流
  4. 4. 使用 IF节点 检查 statusCode 进行条件处理

技巧3:导入cURL命令快速配置

如果你从Postman或API文档中找到了cURL命令,可以直接导入!

步骤

  1. 1. 点击 HTTP Request 节点的 Import cURL 按钮
  2. 2. 粘贴cURL命令
  3. 3. n8n会自动解析并填充所有参数

cURL示例


    
    
    
  curl -X GET "https://api.example.com/data?key=value" \
  -H "Authorization: Bearer token123" \
  -H "Content-Type: application/json"

最佳实践

做这些

避免这些


总结

HTTP Request节点是n8n的瑞士军刀。通过掌握以下要点,你已经可以处理90%的API集成需求:

  1. 1. ✅ 理解4种HTTP方法(GET、POST、PUT、DELETE)
  2. 2. ✅ 配置基础参数(URL、Method、Authentication)
  3. 3. ✅ 使用查询参数和请求头
  4. 4. ✅ 处理JSON请求体
  5. 5. ✅ 排查常见错误
  6. 6. ✅ 处理速率限制和重试

引用链接

[1] 官方文档: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/
[2] n8n系列教程: https://www.undsky.com/blog/?category=n8n%E6%95%99%E7%A8%8B#