如何将任何代码(无论是 curl
、Python 还是 JavaScript)中的 API 请求,映射到 n8n 的 HTTP Request 节点上。
第一步:理解一个 API 请求的“四要素”
无论用什么工具,一个标准的 HTTP API 请求(特别是 POST
请求)通常都由四个核心部分组成,就像寄一个快递一样:
方法 (Method): 你想让服务器做什么操作。(
POST
,GET
,PUT
,DELETE
等)- 好比: 告诉快递员你是要“寄件”(POST) 还是“查件”(GET)。
网址 (URL): 你要把请求发送到哪里。
- 好比: 快递包裹上的“收件人地址”。
请求头 (Headers): 关于这次请求的“元数据”或“说明书”。
- 好比: 快递单上的附加信息,比如“内含易碎品”(Content-Type)、“寄件人身份证号”(Authorization)。它描述的是这个包裹本身,而不是里面的东西。
请求体 (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):
-H 'Content-Type: application/json'
-H 'Authorization: Bearer password'
请求体 (Body):
-d '{...}'
里的所有 JSON 内容。
第三步:将“四要素”映射到 n8n 节点
现在,我们把上面分解出的内容,一一填写到 n8n 节点的“表格”里。
1. 映射 Method
和 URL
这是最简单的,直接复制粘贴。
代码中:
-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 都能从容应对!