发送 HTTP 请求

发送 HTTP 请求操作可将您的工作流连接到 Web 服务器或 URL 并发送 HTTP 请求。

Flow 发送 HTTP 请求后,会等待最多 30 秒以接收 HTTP 响应代码。如果 Flow 在 30 秒后未收到响应,则会关闭与应用的连接。稍后,它会重试该请求。

字段

发送 HTTP 请求操作包含以下字段。

在“发送 HTTP 请求”操作中使用的字段。
字段描述
HTTP 方法要发送的 HTTP 请求的方法。 发送 HTTP 请求 操作支持以下方法:
  • Get - 从服务器请求信息。
  • Delete - 从服务器中删除资源。
  • Head - 检索服务器的 HTTP 响应标头。
  • Options - 检索服务器支持的选项和功能。
  • Patch - 部分更新服务器上的资源。
  • Put - 更新服务器上的资源。
  • Post - 在服务器上创建或替换资源。
URLHTTP 请求发送到的服务器的 URL。
标头HTTP 请求的键和值对。可以输入多个键值对。
正文要发送到服务器的内容。
在出现客户端错误(4XX 响应)时收到 响应代码 (表示出现客户端错误)时,Flow 将:
  • 重试 - 重试最多 24 小时,直到收到不同的响应代码或超时。
  • 失败 - 使工作流运行失败。
  • 忽略 - 忽略该错误并继续运行工作流。
在出现服务器错误(5XX 或 429 响应)时收到 响应代码 (表示出现服务器错误)时,Flow 将:
  • 重试 - 重试最多 24 小时,直到收到不同的响应代码或超时。
  • 失败 - 使工作流运行失败。
  • 忽略 - 忽略该错误并继续运行工作流。

返回的数据

若要在此操作之后的步骤中访问返回的数据,请使用名为 sendHttpRequest 的变量,其中包含 HTTP 响应的所有详细信息。您还可以选择使用运行代码操作来解析响应的 body,以用于后续工作流步骤,如下文示例所示。

如果在单个工作流中多次使用了发送 HTTP 请求行动,则系统会在变量名称中添加一个数字。例如,在使用了两次发送 HTTP 请求行动的工作流中,返回数据的第一个变量为 sendHttpRequest,第二个变量为 sendHttpRequest1。无法自定义此名称。

响应代码

下表介绍了 Flow 在收到响应后如何处理 HTTP 响应代码

Flow 如何处理 HTTP 响应代码。
HTTP 响应代码Flow 如何处理响应代码
2XX 或 3XX 成功Flow 会将 HTTP 请求标记为成功,并执行工作流中的后续操作。
4XX 错误、
5XX 和 429 错误
Flow 将根据操作的配置方式执行以下操作:
  • 重试 - 重试最多 24 小时,直到收到不同的响应代码或超时。
  • 失败 - 使工作流运行失败。
  • 忽略 - 忽略该错误并继续运行工作流。
其他响应代码如果响应返回此表中未描述的代码,或者在重试操作时超时,则 Flow 会将 HTTP 请求标记为失败,使工作流运行失败,并且不会执行后续工作流操作。

密文

密钥用于安全地存储要在发送 HTTP 请求行动中使用的敏感信息,例如访问令牌或密码。可以在 Flow > 设置页面中创建和管理密钥。密钥包含名称、值和描述。在配置 URL、标头值或正文字段时,可将密钥作为 Liquid 变量引用(例如 {{secrets.handle}}),或通过添加密钥选项来引用。密钥值在 Flow 界面中始终不可见,且会在工作流运行日志中被隐去。

触发器

发送 HTTP 请求操作可用于任何工作流。

示例

示例 1:向外部服务发送 HTTP 请求

在此示例中,使用 Flow 向外部服务发送 HTTP 请求。

在开始之前,请配置一个 Web 服务来接收 HTTP 请求并存储这些请求的数据以进行测试,例如 Request Catcher。请记住,在向第三方服务发送敏感数据(例如密码或 API 密钥)时要谨慎。

步骤:

  1. 选择产品状态已更新触发器,这让您能通过更改产品的状态来测试此工作流。
  2. 添加一个 发送 HTTP 请求 操作到您的工作流,并将其连接到触发器。然后通过点击 发送 HTTP 请求 步骤来打开配置面板。
    • HTTP 方法字段中,输入 POST
    • URL 字段中,输入要测试的 URL,例如 https://yourFlowTest.requestcatcher.com/test
    • 标头部分,输入一个标头,其Content-Typetext/plain
    • 正文部分,输入 {{product.title}}{{product.status}},以发送来自触发器的产品标题和更新后的状态。
  3. 激活工作流。
  4. 通过更改某个产品的状态(例如从草稿更改为可用)来对其进行测试。
  5. 在外部测试服务中观察结果,例如本示例中的 https://yourFlowTest.requestcatcher.com/

示例 2:使用“运行代码”解析 HTTP 响应

在此示例中,使用 Flow 将 HTTP 请求发送到外部服务,并使用运行代码操作来解析 HTTP 响应的 body,以供后续工作流步骤使用。

在开始之前,请选择一个可接收 HTTP 请求并返回数据的 Web 服务,例如 Postman Echo。请注意,向第三方服务发送敏感数据(例如密码或 API 密钥)时务必谨慎。

步骤:

  1. 选择产品状态已更新触发器,这让您能通过更改产品的状态来测试此工作流。

  2. 发送 HTTP 请求操作添加到您的工作流,并将其连接到触发器。然后点击发送 HTTP 请求步骤,打开配置面板。

    • HTTP 方法字段中,输入 POST

    • URL 字段中,输入要测试的 URL,例如 https://postman-echo.com/post

    • 标头部分,输入一个标头,其Content-Typeapplication/json

    • 正文部分,输入要返回到工作流的 JSON 示例,例如:

      {
          "productTitle": "{{product.title}}",
          "productStatus": "{{product.status}}"
      }
  3. 运行代码操作添加到您的工作流,并将其连接到发送 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
        }
      }
  4. 记录输出操作添加到您的工作流,并将其连接到运行代码操作。然后点击记录输出步骤,打开配置面板。

    • 输出字段中,包括运行代码步骤返回的变量,例如:

      Title from HTTP response: {{runCode.productTitle}}
      Status from HTTP response: {{runCode.productStatus}}
  5. 激活工作流。

  6. 通过更改某个产品的状态(例如从草稿更改为可用)来对其进行测试。

  7. Flow / 最近运行 页面观察生成的运行,并注意记录输出步骤中的值与发送 HTTP 请求输出返回的值匹配。

模板

通知您的发货服务商即将到来的订单

在 Order Tagger 中为订单添加“Warehouse”标记后,向您的发货服务商发送 HTTP 请求。查看模板

将新订单发送到 Airtable

创建订单后,将订单发送到 Airtable。查看模板

将所有现有产品和新产品发送到 Airtable

每 10 分钟查找一次尚未(通过标记)发送到 Airtable 的产品,并将其发送到 Airtable。查看模板

通过存储在 Airtable 中的产品数据批量更新产品

通过存储在 Airtable 中的产品数据批量更新产品。查看模板

使用 SendGrid 通知客户即将到期的礼品卡

每天获取所有将在 7 天后到期的礼品卡,并使用 SendGrid 向客户发送电子邮件。查看模板

当客户下单购买自定义商品时,使用 SendGrid 发送电子邮件

当客户下单购买自定义商品时,使用 SendGrid 发送交易电子邮件。查看模板