如何将任何代码(无论是 curl、Python 还是 JavaScript)中的 API 请求,映射到 n8n 的 HTTP Request 节点上。

第一步:理解一个 API 请求的“四要素”

无论用什么工具,一个标准的 HTTP API 请求(特别是 POST 请求)通常都由四个核心部分组成,就像寄一个快递一样:

  1. 方法 (Method): 你想让服务器做什么操作。(POST, GET, PUT, DELETE 等)

    • 好比: 告诉快递员你是要“寄件”(POST) 还是“查件”(GET)。
  2. 网址 (URL): 你要把请求发送到哪里。

    • 好比: 快递包裹上的“收件人地址”。
  3. 请求头 (Headers): 关于这次请求的“元数据”或“说明书”。

    • 好比: 快递单上的附加信息,比如“内含易碎品”(Content-Type)、“寄件人身份证号”(Authorization)。它描述的是这个包裹本身,而不是里面的东西。
  4. 请求体 (Body): 你实际发送给服务器的数据。

    • 好比: 你要寄送的“包裹里的物品”。

n8n 的 HTTP Request 节点界面,就是围绕这“四要素”设计的,只不过是用图形化的方式来呈现。

第二步:将脚本代码与“四要素”对应

让我们以我们最终成功的 curl 命令为例,因为它最能清晰地体现这四要素:

Bash

curl -X POST \
  'https://rain1226-crawl4ai.hf.space/crawl_sync' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer password' \
  -d '{
    "urls": ["https://www.python.org"],
    "crawler_options": {}
  }'

我们来分解这个命令:

  • 方法 (Method): -X POST -> POST

  • 网址 (URL): 'https://rain1226-crawl4ai.hf.space/crawl_sync'

  • 请求头 (Headers):

    1. -H 'Content-Type: application/json'

    2. -H 'Authorization: Bearer password'

  • 请求体 (Body): -d '{...}' 里的所有 JSON 内容。

第三步:将“四要素”映射到 n8n 节点

现在,我们把上面分解出的内容,一一填写到 n8n 节点的“表格”里。

1. 映射 MethodURL

这是最简单的,直接复制粘贴。

  • 代码中: -X POST'https://...'

  • n8n 中:

    • Method 字段选择 POST

    • URL 字段粘贴网址。


2. 映射 Headers (请求头) - 【您的核心问题】

这是最容易混淆的部分。n8n 对请求头做了智能区分:认证相关的头普通头

  • 代码中:

    • 'Authorization: Bearer password' <– 这是一个认证头

    • 'Content-Type: application/json' <– 这是一个普通头

  • n8n 中:

    • Authentication 区域: 这个区域是 n8n 专门用来处理认证头的地方。当你选择 Header Auth 并创建一个凭证时,n8n 会在后台自动帮你生成一个 Authorization 请求头。这样做更安全,且可以在多个节点中复用。所以,Authorization 这个头,我们通过 n8n 的 Authentication 区域来设置

    • Send Headers 区域: 这个区域用来设置所有其他的、非认证用途的普通请求头。比如 Content-Type,它的作用是告诉服务器你发送的 Body 是什么格式,这不属于身份验证,所以我们把它填在这里。

小结:

  • 看到 Authorization, API-Key, Token 等与身份验证相关的头,优先使用 n8n 的 Authentication 区域。

  • 看到 Content-Type, Accept, User-Agent 等描述请求本身属性的头,使用 Send Headers 区域。


3. 映射 Body (请求体)

  • 代码中: -d '{"urls": ["https://..."], "crawler_options": {}}'

  • n8n 中:

    • 首先,打开 Send Body 开关。

    • Body Content Type 选择 JSON,这对应了我们 Header 里的 Content-Type: application/json

    • n8n 的 Body Parameters 就是一个可视化的 JSON 构建器。你不需要手动写大括号和引号。

      • 你在 Name 列写的 urls,就对应了 JSON 的键 "urls"

      • 你在 Value 列写的 {{ ["https://..."] }},就对应了 JSON 的值 ["https://..."]

    • n8n 会根据你在这个区域填写的“字段”,自动帮你组装成最终的 JSON 字符串发送出去。

最终总结

您可以把 n8n 的 HTTP Request 节点看作是一个标准化的“快递申请单”。无论您从哪个教程(Python, JS, curl)看到 API 的用法,您要做的就是把它的用法分解成 方法、网址、请求头、请求体 这四要素,然后把这些信息填写到申请单上对应的格子里。

希望这个详细的分解能帮助您建立清晰的概念模型,以后再遇到任何 API 都能从容应对!