发送 HTTP 请求

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

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

字段

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

发送 HTTP 请求操作中使用的字段。
字段描述
HTTP 方法发送 HTTP 请求的方法。发送 HTTP 请求 操作支持以下方法:
  • Get - 发送请求以从服务器获取信息。
  • Delete - 从服务器中删除资源。
  • Head - 检索服务器的 HTTP 响应标头。
  • Options - 检索服务器支持的选项和功能。
  • Patch - 部分更新服务器上的资源。
  • Put - 更新服务器上的资源。
  • Post - 在服务器上创建或替换资源。
URL发送 HTTP 请求的服务器的 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 >设置页面创建和管理的。机密包含名称、值和描述。将机密作为Liquid 变量引用(例如{{secrets.handle}} ),或在配置URL、标头值或 Body 字段时从添加机密选项中引用。秘密值在 Flow 界面中永远不可见,并且是从工作流运行日志中编校的。

触发器

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

示例

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

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

在开始前,配置接收 HTTP 请求的 Web 服务,并存储这些请求的数据以用于测试,例如 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 请求并返回数据的网络服务,例如 Postman Echo。向第三方服务发送敏感数据(例如密码或 API 密钥)时,请务必谨慎。

步骤:

  1. 选择**产品状态已更新**触发器,用于通过更改产品状态来测试此工作流。
  2. 在工作流程中添加一个发送 HTTP 请求操作,并将其连接到触发器。接着点击发送 HTTP 请求步骤以打开配置面板。
    • HTTP 方法字段中,输入 POST
    • URL 字段中,输入要测试的 URL,例如 https://postman-echo.com/post
    • 标头部分,输入一个Content-Typeapplication/json 的标头。
    • Body部分中,输入示例 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
}
}
  1. 在工作流程中添加一个日志输出操作,并将其连接到运行代码操作。然后点击运行代码步骤,打开配置面板。
    • 输出字段中,包括运行代码步骤返回的变量,例如: ``` Title from HTTP response: {{runCode.productTitle}} Status from HTTP response: {{runCode.productStatus}}
5. 激活工作流。
6. 通过更改产品状态(例如从**草稿**更改为**活动**)来测试它。
7. 从**[Flow / 最近运行](https://admin.shopify.com/apps/flow/activity)**页面观察运行结果,并注意**日志输出**步骤中的值与**发送 HTTP 请求**输出返回的值相匹配。

## 模板 {#templates}

### 针对即将到来的订单通知发货服务商

当订单在订单标注器中被标记为“仓库”时向发货服务商发送 HTTP 请求。[查看模板](https://shopify.com/admin/apps/flow/editor/templates/e99f15ae-454b-443b-b6c7-7dc4b2afc129)

### 向 Airtable 发送新订单

在创建订单时,将订单发送到 Airtable。[查看模板](https://admin.shopify.com/apps/flow/editor/templates/0196f2e1-ab85-7157-90e2-7de1149201a7)

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

每隔 10 分钟,(通过标签)查找尚未发送到 Airtable 的产品并发送到 Airtable。[查看模板](https://admin.shopify.com/apps/flow/editor/templates/0196f2e1-a789-7f9d-a64e-a9be2b544e82)

### 根据 Airtable 中存储的产品数据更新批次中的产品

根据 Airtable 中存储的产品数据更新批次中的产品。[查看模板](https://admin.shopify.com/apps/flow/editor/templates/0196f2e1-b499-7384-a418-919d752d7a8b)

### 使用 SendGrid 通知客户礼品卡即将过期

每天获取所有 7 天内到期的礼品卡,并使用 SendGrid 向客户发送电子邮件。[查看模板](https://admin.shopify.com/apps/flow/editor/templates/0196f2e1-a4b9-7ff0-8181-9de43d95ae1e)

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

当客户下单购买自定义商品时,使用 SendGrid 发送交易电子邮件。[查看模板](https://admin.shopify.com/apps/flow/editor/templates/0196f2e1-adc1-7139-9644-43ba3a4c71eb)
没有找到您需要的答案?我们将为您提供帮助。