- 简介
- 入门指南
- 使用 BPMN 进行流程建模
- 使用 Case Management 进行流程建模
- 使用 Flow 进行流程建模
- 流程实施
- 流程运营
- 流程监控
- 流程优化
- 参考信息
HTTP 请求节点配置、身份验证和响应分支模式。
操作
向 URL 发送 HTTP 请求,并使响应可用于下游节点。
两个 HTTP 节点
Flow 提供两个 HTTP 节点。根据您希望处理身份验证的方式进行选择:
- HTTP 请求(
core.action.http) - 内联配置方法、URL、标头、正文和身份验证。将其用于您自行管理凭据的任何外部 REST 端点,例如 API 密钥标头或持有者令牌。这是本页面记录的节点。 - 托管 HTTP 请求(
core.action.http.v2) - 通过 Integration Service 托管连接发出请求,因此身份验证由该连接处理,而不是内联配置。当您要对通过 Integration Service 连接的服务进行集中管理凭据时,请使用此选项。
配置参考
| 字段 | 必填 | 默认 | 描述 |
|---|---|---|---|
| Mode | 是 | 手动 | 如何配置请求。选择手动以自己定义请求,或选择 API 定义以从 OpenAPI 或 Swagger 规范导入配置。 |
| 从 cURL 导入 | 否 | 无 | 解析 cURL 命令并自动填充方法、URL、标头和正文。选择配置字段上方工具栏中的“cURL”按钮。 |
| HTTP 方法 | 是 | 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 | 请求失败时的重试次数。重试使用超时值作为退避间隔。 |
编辑器会建议常见标头名称,例如Authorization 、 Content-Type 、 Accept和X-Api-Key等。对于查询参数,添加名称为page且值为2的参数会将请求发送到https://api.example.com/items?page=2 。
节点按顺序评估分支条件,然后选择第一个匹配项。如果没有分支匹配,则流程遵循“默认”输出。
分支条件表达式使用与“决策”和“切换”节点相同的 JavaScript 语法:
$vars.httpRequest1.output.statusCode === 200
$vars.httpRequest1.output.statusCode === 200
$vars.httpRequest1.output.statusCode >= 400
$vars.httpRequest1.output.statusCode >= 400
每个分支作为单独的输出句柄显示在画布上节点的右侧,旁边还有“默认”句柄。
常见超时值:
PT30S- 30 秒PT5M- 5 分钟PT15M- 15 分钟PT1H- 1 小时
凭据
您可以通过两种方式对请求进行身份验证。
手动身份验证
直接在请求标头中传递凭据。对于 API 密钥身份验证,请添加一个标头,其名称为X-Api-Key ,并将值设置为您的密钥。对于持有者令牌身份验证,请添加具有类似于Bearer <your-token>值的Authorization标头。
将令牌和 API 密钥等敏感值存储在密码变量中,而不是对其进行硬编码。
Integration Service 连接器
在属性面板中选择预配置的 Integration Service 连接。连接会自动将凭据注入到请求中,因此您无需自行管理标头。
当您希望进行集中式凭据管理、自动令牌刷新,或多个流程共享相同的 API 凭据时,请使用 Integration Service 连接器。
Integration Service 连接器在 UiPath Automation Cloud 门户中配置。有关设置说明,请参阅 Integration Service 文档。
示例
示例 1 -- 基本 GET 请求
从公共 API 中获取单个资源。
节点已配置为“ GET , “URL”为https://jsonplaceholder.typicode.com/posts/1 。所有其他字段都保留为默认值。
响应可在下游脚本节点中找到:
const body = $vars.httpRequest1.output.body;
const status = $vars.httpRequest1.output.statusCode;
return {
title: body.title,
userId: body.userId,
status: status
};
const body = $vars.httpRequest1.output.body;
const status = $vars.httpRequest1.output.statusCode;
return {
title: body.title,
userId: body.userId,
status: status
};
响应对象在$vars.httpRequest1.output可用,并包含三个字段:
$vars.httpRequest1.output.body- 解析的响应正文$vars.httpRequest1.output.statusCode- HTTP 状态代码,例如200$vars.httpRequest1.output.headers- 包含响应标头的对象
示例 2 -- 具有 JSON 正文的 POST 请求
通过发送 JSON 有效负载创建新资源。
节点已配置为“HTTP 方法”设为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 的响应遵循不同的路径,而无需单独的决策节点。
节点配置为“HTTP 方法”为GET , URL为https://api.example.com/users/$vars.userId , “分支”部分中有两个分支:条件为$vars.httpRequest1.output.statusCode === 200 Success和条件为Not Found的$vars.httpRequest1.output.statusCode === 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 请求”节点作为调用任何 API 的通用工具。如果要调用的服务存在专用集成节点,请使用该节点。
| 在以下情况下使用 HTTP 请求... | 在以下情况下使用集成节点: |
|---|---|
| 此 API 在节点面板中没有专用连接器 | 存在服务的连接器,例如 Slack、Salesforce 或 HubSpot |
| 您需要对标头、查询参数和正文格式进行完全控制 | 您需要预构建的有类型的输入和输出,无需手动配置 |
| 您正在针对新的 API 或内部服务进行原型设计 | 您需要通过 Integration Service 自动进行身份验证和令牌刷新 |
| 该 API 使用非标准身份验证方案 | 您需要一个可维护的流程,如果 API 更改其合同,则该流程不会中断 |
经验法则:先在节点面板中搜索连接器。仅当您的目标服务不存在任何内容时,才会回退到 HTTP 请求。