发送 HTTP 请求
发送 HTTP 请求操作可将您的工作流连接到 Web 服务器或 URL 并发送 HTTP 请求。
Flow 发送 HTTP 请求后,会等待最多 30 秒以接收 HTTP 响应代码。如果 Flow 在 30 秒后未收到响应,则会关闭与应用的连接。稍后,它会重试该请求。
字段
发送 HTTP 请求操作包含以下字段。
| 字段 | 描述 |
|---|---|
| HTTP 方法 | 要发送的 HTTP 请求的方法。 发送 HTTP 请求 操作支持以下方法:
|
| URL | HTTP 请求发送到的服务器的 URL。 |
| 标头 | HTTP 请求的键和值对。可以输入多个键值对。 |
| 正文 | 要发送到服务器的内容。 |
| 在出现客户端错误(4XX 响应)时 | 收到 响应代码 (表示出现客户端错误)时,Flow 将:
|
| 在出现服务器错误(5XX 或 429 响应)时 | 收到 响应代码 (表示出现服务器错误)时,Flow 将:
|
返回的数据
若要在此操作之后的步骤中访问返回的数据,请使用名为 sendHttpRequest 的变量,其中包含 HTTP 响应的所有详细信息。您还可以选择使用运行代码操作来解析响应的 body,以用于后续工作流步骤,如下文示例所示。
如果在单个工作流中多次使用了发送 HTTP 请求行动,则系统会在变量名称中添加一个数字。例如,在使用了两次发送 HTTP 请求行动的工作流中,返回数据的第一个变量为 sendHttpRequest,第二个变量为 sendHttpRequest1。无法自定义此名称。
响应代码
下表介绍了 Flow 在收到响应后如何处理 HTTP 响应代码。
| HTTP 响应代码 | Flow 如何处理响应代码 |
|---|---|
| 2XX 或 3XX 成功 | Flow 会将 HTTP 请求标记为成功,并执行工作流中的后续操作。 |
| 4XX 错误、 5XX 和 429 错误 | Flow 将根据操作的配置方式执行以下操作:
|
| 其他响应代码 | 如果响应返回此表中未描述的代码,或者在重试操作时超时,则 Flow 会将 HTTP 请求标记为失败,使工作流运行失败,并且不会执行后续工作流操作。 |
密文
密钥用于安全地存储要在发送 HTTP 请求行动中使用的敏感信息,例如访问令牌或密码。可以在 Flow > 设置页面中创建和管理密钥。密钥包含名称、值和描述。在配置 URL、标头值或正文字段时,可将密钥作为 Liquid 变量引用(例如 {{secrets.handle}}),或通过添加密钥选项来引用。密钥值在 Flow 界面中始终不可见,且会在工作流运行日志中被隐去。
触发器
发送 HTTP 请求操作可用于任何工作流。
示例
示例 1:向外部服务发送 HTTP 请求
在此示例中,使用 Flow 向外部服务发送 HTTP 请求。
在开始之前,请配置一个 Web 服务来接收 HTTP 请求并存储这些请求的数据以进行测试,例如 Request Catcher。请记住,在向第三方服务发送敏感数据(例如密码或 API 密钥)时要谨慎。
步骤:
- 选择产品状态已更新触发器,这让您能通过更改产品的状态来测试此工作流。
- 添加一个 发送 HTTP 请求 操作到您的工作流,并将其连接到触发器。然后通过点击 发送 HTTP 请求 步骤来打开配置面板。
- 在 HTTP 方法字段中,输入
POST。 - 在 URL 字段中,输入要测试的 URL,例如
https://yourFlowTest.requestcatcher.com/test。 - 在标头部分,输入一个标头,其键为
Content-Type,值为text/plain。 - 在正文部分,输入
{{product.title}}和{{product.status}},以发送来自触发器的产品标题和更新后的状态。
- 在 HTTP 方法字段中,输入
- 激活工作流。
- 通过更改某个产品的状态(例如从草稿更改为可用)来对其进行测试。
- 在外部测试服务中观察结果,例如本示例中的
https://yourFlowTest.requestcatcher.com/。
示例 2:使用“运行代码”解析 HTTP 响应
在此示例中,使用 Flow 将 HTTP 请求发送到外部服务,并使用运行代码操作来解析 HTTP 响应的 body,以供后续工作流步骤使用。
在开始之前,请选择一个可接收 HTTP 请求并返回数据的 Web 服务,例如 Postman Echo。请注意,向第三方服务发送敏感数据(例如密码或 API 密钥)时务必谨慎。
步骤:
选择产品状态已更新触发器,这让您能通过更改产品的状态来测试此工作流。
将发送 HTTP 请求操作添加到您的工作流,并将其连接到触发器。然后点击发送 HTTP 请求步骤,打开配置面板。
在 HTTP 方法字段中,输入
POST。在 URL 字段中,输入要测试的 URL,例如
https://postman-echo.com/post。在标头部分,输入一个标头,其键为
Content-Type,值为application/json。在正文部分,输入要返回到工作流的 JSON 示例,例如:
{ "productTitle": "{{product.title}}", "productStatus": "{{product.status}}" }
将运行代码操作添加到您的工作流,并将其连接到发送 HTTP 请求操作。然后点击运行代码步骤,打开配置面板。
在定义输入字段中,包括
sendHTTPrequest对象返回的body,例如:query{ sendHttpRequest { body } }在定义输出字段中,根据输出架构进行定义,例如:
type Output { productTitle: String! productStatus: String! }在编写代码字段中,使用
JSON.parse方法解析响应,并确保您返回的数据与输出架构中定义的形态和类型匹配,例如:export default function main(input) { const body = JSON.parse(input.sendHttpRequest.body); console.log("body is", body); return { productTitle: body.data.productTitle, productStatus: body.data.productStatus } }
将记录输出操作添加到您的工作流,并将其连接到运行代码操作。然后点击记录输出步骤,打开配置面板。
在输出字段中,包括运行代码步骤返回的变量,例如:
Title from HTTP response: {{runCode.productTitle}} Status from HTTP response: {{runCode.productStatus}}
激活工作流。
通过更改某个产品的状态(例如从草稿更改为可用)来对其进行测试。
从 Flow / 最近运行 页面观察生成的运行,并注意记录输出步骤中的值与发送 HTTP 请求输出返回的值匹配。
模板
通知您的发货服务商即将到来的订单
在 Order Tagger 中为订单添加“Warehouse”标记后,向您的发货服务商发送 HTTP 请求。查看模板
将新订单发送到 Airtable
创建订单后,将订单发送到 Airtable。查看模板
将所有现有产品和新产品发送到 Airtable
每 10 分钟查找一次尚未(通过标记)发送到 Airtable 的产品,并将其发送到 Airtable。查看模板
通过存储在 Airtable 中的产品数据批量更新产品
通过存储在 Airtable 中的产品数据批量更新产品。查看模板
使用 SendGrid 通知客户即将到期的礼品卡
每天获取所有将在 7 天后到期的礼品卡,并使用 SendGrid 向客户发送电子邮件。查看模板
当客户下单购买自定义商品时,使用 SendGrid 发送电子邮件
当客户下单购买自定义商品时,使用 SendGrid 发送交易电子邮件。查看模板