- 开始使用
- 构建
- 部署并运行
- 示例
- 参考
HTTP 请求
“HTTP 请求”节点向网址发送请求,包含其配置、身份验证和响应分支。
操作
向 URL 发送 HTTP 请求,并使响应可供请求后的节点使用。
身份验证选项
一个 HTTP 请求节点涵盖您在“身份验证”字段中选择的两种身份验证方式:
- 手动身份验证: 方法、URL、标头、正文和凭据均内联配置。它适用于在节点中管理凭据(例如 API 密钥标头或持有者令牌)的任何外部具象状态传输 (REST) 端点。
- 基于连接器的身份验证:请求通过连接,因此连接处理身份验证,并且不在节点中配置凭据。它适合对通过 Integration Service 连接的服务进行集中式凭据管理。
配置参考
| 字段 | 必填 | 默认 | 描述 |
|---|---|---|---|
| 导入或导出 | 否 | 无 | 字段上方的菜单。“从 cURL 导入”会解析 cURL 命令并自动填充方法、URL、标头和正文。 |
| 身份验证 | 是 | 手动身份验证 | 如何对请求进行身份验证。手动身份验证通过请求标头中的凭据。基于连接器的身份验证通过连接发送请求,如下所述。 |
| 方法 | 是 | GET | 请求的 HTTP 方法。支持的值为GET 、 POST 、 PUT 、 PATCH和DELETE 。 |
| URL | 是 | 无 | 请求发送到的完整 URL,包括https://方案。在“固定值”字段中,插入带有双大括号的值,例如https://api.example.com/users/{{ $vars.userId }} 。 |
| 标头 | 否 | 无 | 作为 HTTP 请求标头发送的键值对。标头名称和值支持变量表达式。 |
| 查询参数 | 否 | 无 | 作为查询字符串附加到 URL 的键值对。名称和值支持变量表达式。 |
| 内容类型 | 否 | application/json | 请求正文的多用途互联网邮件扩展程序 (MIME) 类型。支持的值为application/json 、 application/xml 、 text/plain和application/x-www-form-urlencoded 。 |
| 正文 | 否 | 空白 | POST 、 PUT和PATCH请求的请求正文。直接在代码编辑器中输入值或使用变量表达式。 |
| “分支”选项卡 | 否 | 仅默认输出 | 根据响应属性路由工作流的响应分支。每个分支都有名称和条件表达式。 |
| 超时( “高级”选项卡) | 否 | PT15M | 等待响应的最长时间,以国际标准化组织 (ISO) 8601 持续时间格式表示。 |
| 重试次数( “高级”选项卡) | 否 | 0 | 请求失败时的重试次数。重试使用超时值作为退避间隔。 |
基于连接器的身份验证
当身份验证为基于连接器的身份验证时,面板显示以下字段,而不是手动字段:
| 字段 | 必填 | 描述 |
|---|---|---|
| 连接器 | 是 | 发送请求的连接器,例如 Slack。 |
| 连接 (以连接器命名,例如Slack 连接) | 是 | 要使用的连接。 |
| 方法 | 是 | 请求的 HTTP 方法。 |
| 基本 URL | 否 | 连接器的基本 URL,以占位符显示,例如https://slack.com/api 。 |
| 路径 | 否 | REST API 请求的端点路径。 |
| 标头 | 否 | 键值对,最多 20 个。连接器会自动添加自己的Authorization 、 Accept和Content-Type标头。 |
| 查询参数 | 否 | 键值对,最多 20 个。 |
编辑器会建议常见标头名称,例如Authorization 、 Content-Type 、 Accept和X-Api-Key等。对于查询参数,添加名称为page且值为2的参数会将请求发送到https://api.example.com/items?page=2 。
节点按顺序评估分支条件,然后选择第一个匹配项。如果没有分支匹配,工作流将遵循默认输出。
分支条件表达式使用与“决策”和“切换”节点相同的 JavaScript 语法:
$vars.httpRequest1.output.code === 200
$vars.httpRequest1.output.code === 200
$vars.httpRequest1.output.code >= 400
$vars.httpRequest1.output.code >= 400
每个分支作为单独的输出句柄显示在画布上节点的右侧,旁边还有“默认”句柄。
常见超时值:
PT30S:30 秒。PT5M:5 分钟。PT15M:15 分钟。PT1H:1 小时。
凭据
您可以通过两种方式对请求进行身份验证。
手动身份验证
直接在请求标头中传递凭据。对于 API 密钥身份验证,请添加一个标头,其名称为X-Api-Key ,并将值设置为您的密钥。对于持有者令牌身份验证,请添加具有类似于Bearer <your-token>值的Authorization标头。
将令牌和 API 密钥等敏感值存储在密码变量中,而不是对其进行硬编码。
基于连接器的身份验证
在属性面板中选择一个连接。连接会自动将凭据注入到请求中,因此您无需自行管理标头。
连接适用于集中式凭据管理、自动令牌刷新以及多个工作流共享相同 API 凭据的情况。
Create a connection describes how to create one.
示例
示例 1:基本 GET 请求
从公共 API 中获取单个资源。
节点已配置为“方法”为GET , “URL”为https://jsonplaceholder.typicode.com/posts/1 。所有其他字段都保留为默认值。
响应可在下游脚本节点中找到:
const body = $vars.httpRequest1.output.body;
const status = $vars.httpRequest1.output.code;
return {
title: body.title,
userId: body.userId,
status: status
};
const body = $vars.httpRequest1.output.body;
const status = $vars.httpRequest1.output.code;
return {
title: body.title,
userId: body.userId,
status: status
};
响应对象在$vars.httpRequest1.output可用,并包含三个字段:
$vars.httpRequest1.output.body:解析的响应正文。$vars.httpRequest1.output.code:HTTP 状态代码,例如200。$vars.httpRequest1.output.headers:包含响应标头的对象。
示例 2:包含 JSON 正文的 POST 请求
通过发送 JSON 有效负载创建新资源。
节点配置为“方法”设为POST , URL设为https://api.example.com/orders , Authorization标头的值为Bearer {{ $vars.apiToken }} , “内容类型”设为application/json 。正文:
{
"product": "Widget",
"quantity": 5,
"customer_id": "cust_12345"
}
{
"product": "Widget",
"quantity": 5,
"customer_id": "cust_12345"
}
已创建资源的 ID 可在下游节点中找到:
const orderId = $vars.httpRequest1.output.body.id;
return { orderId: orderId };
const orderId = $vars.httpRequest1.output.body.id;
return { orderId: orderId };
如果请求失败且您已连接错误句柄,则可在$vars.httpRequest1.error中找到错误详细信息:
// In a Script node connected to the error handle
const errorMessage = $vars.httpRequest1.error.message;
const errorStatus = $vars.httpRequest1.error.status;
return {
failed: true,
reason: errorMessage,
httpStatus: errorStatus
};
// In a Script node connected to the error handle
const errorMessage = $vars.httpRequest1.error.message;
const errorStatus = $vars.httpRequest1.error.status;
return {
failed: true,
reason: errorMessage,
httpStatus: errorStatus
};
错误对象包含:
codemessagedetailcategorystatus
示例 3:路由响应分支
响应分支让工作流根据 API 的响应遵循不同的路径,而无需单独的决策节点。
该节点配置了“方法” 、“URL”、 “分支”选项卡的GET 、 URL和https://api.example.com/users/{{ $vars.userId }} ,以及Success $vars.httpRequest1.output.code === 200 Not Found “ $vars.httpRequest1.output.code === 404 ”。
现在,该节点在画布上具有三个输出句柄:
- “成功”:连接到处理用户数据的节点。
- 未找到:连接到处理缺失用户的节点。
- 默认:连接到任何其他状态代码的回退路径。
每个下游路径都会收到完整响应。例如,在成功分支上:
const user = $vars.httpRequest1.output.body;
return { name: user.name, email: user.email };
const user = $vars.httpRequest1.output.body;
return { name: user.name, email: user.email };
在 HTTP 请求和集成节点之间进行选择
使用“HTTP 请求”节点作为调用任何 API 的通用工具。如果要调用的服务存在专用集成节点,请使用该节点。
| 在以下情况下使用 HTTP 请求... | 在以下情况下使用集成节点: |
|---|---|
| API 在“添加节点”面板中没有专用连接器 | A connector exists for the service, such as Slack, Salesforce, or HubSpot CRM |
| 您需要对标头、查询参数和正文格式进行完全控制 | 您需要预构建的有类型的输入和输出,无需手动配置 |
| 您正在针对新的 API 或内部服务进行原型设计 | 您需要连接为您处理登录和令牌刷新 |
| 该 API 使用非标准身份验证方案 | 您需要一个可维护的工作流,该工作流不会在 API 更改其合同时中断 |
通常,最好先在“添加节点”面板中搜索连接器,然后在目标服务的目标位置不存在时,再使用“HTTP 请求”进行回退。