傳送 HTTP 要求
「傳送 HTTP 要求」動作可將您的工作流程連結至網路伺服器或 URL,並傳送 HTTP 要求。
Flow 傳送 HTTP 要求後,最多會等待 30 秒以取得 HTTP response code。若 30 秒後仍未收到回應,Flow 會關閉與您的 app 的連線,稍後再重試該要求。
欄位
「傳送 HTTP 要求」動作包含下列欄位。
| 欄位 | 說明 |
|---|---|
| HTTP 方法 | 要傳送的 HTTP 要求方法。 傳送 HTTP 要求 動作支援下列方法:
|
| URL | 要傳送 HTTP 要求的伺服器 URL。 |
| 標頭 | HTTP 要求的鍵值對。可輸入多組鍵值對。 |
| 本文 | 要傳送至伺服器的內容。 |
| 發生用戶端錯誤 (4XX 回應) 時 | 收到 回應代碼 表示用戶端錯誤時,Flow 將:
|
| 發生伺服器錯誤 (5XX 或 429 回應) 時 | 收到 回應代碼 表示伺服器錯誤時,Flow 將:
|
傳回的資料
若要在此動作後的步驟中存取傳回的資料,請使用名為 sendHttpRequest 的變數。此變數包含 HTTP 回應的所有詳情。您也可以使用 Run code 動作剖析回應的 body,以供後續工作流程步驟使用,如下方 example 所示。
若在單一工作流程中多次使用 傳送 HTTP 要求 動作,變數名稱中會加上數字。舉例來說,如果在工作流程中使用 傳送 HTTP 要求 動作兩次,第一個用於傳回資料的變數為 sendHttpRequest,第二個變數為 sendHttpRequest1。此名稱無法自訂。
回應代碼
下表說明 Flow 在收到回應後如何處理 HTTP response code。
| HTTP 回應代碼 | Flow 如何處理該回應代碼 |
|---|---|
| 2XX 或 3XX 成功 | Flow 會將此 HTTP 要求標記為成功,並執行後續的工作流程動作。 |
| 4XX 錯誤, 5XX 與 429 錯誤 | 視動作設定而定,Flow 將:
|
| 其他回應代碼 | 若回應傳回的代碼不在此表範圍內,或在重試動作時逾時,Flow 會將該 HTTP 要求標記為失敗,使工作流程執行失敗,且不會執行後續的工作流程動作。 |
機密
密鑰可用於安全儲存在 傳送 HTTP 要求 動作中使用的敏感資訊,例如存取憑證或密碼。密鑰可從 Flow > 設定 頁面建立並管理。密鑰包含控制代碼、值和說明。在設定網址、標頭值或內文欄位時,您可以將密鑰作為 Liquid 變數 (例如 {{secrets.handle}}) 來參照,或從 新增密鑰 選項來參照。密鑰值永遠不會顯示在 Flow 介面中,且會從工作流程執行記錄中隱去。
觸發條件
「傳送 HTTP 要求」動作可用於任何工作流程。
範例
範例 1:傳送 HTTP 要求至外部服務
此範例示範如何使用 Flow 將 HTTP 要求傳送至外部服務。
開始前,請先設定可接收 HTTP 要求並儲存其資料以供測試的網路服務,例如 Request Catcher。將敏感資料(例如密碼或 API 金鑰)傳送至第三方服務時,請務必謹慎。
步驟:
- 選擇 商品狀態已更新 觸發條件,這讓您可以透過變更商品狀態來測試此工作流程。
- 新增一個 傳送 HTTP 請求 動作至您的工作流程,並將其連結到觸發條件。接著按一下 傳送 HTTP 請求 步驟。
- 在 HTTP 方法 欄位輸入
POST。 - 在 網址 欄位輸入用來測試的網址,例如
https://yourFlowTest.requestcatcher.com/test。 - 在 標頭 區段,以 鍵 設為
Content-Type,值 設為text/plain。 - 在 本文 區段,輸入
{{product.title}}和{{product.status}},以從觸發條件傳送商品的標題與更新後的狀態。
- 在 HTTP 方法 欄位輸入
- 啟用工作流程。
- 將某個商品的狀態變更以進行測試,例如從 草稿 改為 啟用。
- 在外部測試服務中查看結果,例如本例中的
https://yourFlowTest.requestcatcher.com/。
範例 2:使用「執行程式碼」解析 HTTP 回應
在此範例中,使用 Flow 將 HTTP 請求傳送至外部服務,並用 Run code 動作解析 HTTP 回應的 body,以供後續的工作流程步驟使用。
開始之前,請選擇可接收 HTTP 請求並回傳資料的網路服務,例如 Postman Echo。傳送敏感資料 (例如密碼或 API 金鑰) 至第三方服務時請務必謹慎。
步驟:
選擇 商品狀態已更新 觸發條件,這讓您可以透過變更商品狀態來測試此工作流程。
新增一個 傳送 HTTP 請求 動作至您的工作流程,並將其連結到觸發條件。接著按一下 傳送 HTTP 請求 步驟以開啟設定面板。
在 HTTP 方法 欄位輸入
POST。在 網址 欄位輸入用來測試的網址,例如
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 / Recent runs 頁面查看執行結果,並注意 記錄輸出 步驟中的數值與 傳送 HTTP 請求 輸出回傳的數值相符。
範本
通知您的出貨服務供應商即將產生的訂單
當訂單在 Order Tagger 中被加上「Warehouse」標籤時,向您的出貨服務供應商傳送 HTTP 請求。檢視範本
將新訂單傳送到 Airtable
建立訂單時,將訂單傳送到 Airtable。檢視範本
將所有現有與新商品傳送到 Airtable
每 10 分鐘尋找尚未傳送到 Airtable 的商品 (依標籤),並將其傳送到 Airtable。檢視範本
根據儲存在 Airtable 的商品資料,批次更新商品
根據儲存在 Airtable 的商品資料,批次更新商品。檢視範本
使用 SendGrid 通知顧客即將到期的禮品卡
每天取得所有將於 7 天後到期的禮品卡,並使用 SendGrid 向顧客寄送電子郵件。檢視範本
當顧客訂購自訂品項時,使用 SendGrid 寄送電子郵件
當顧客訂購自訂品項時,使用 SendGrid 寄送交易型電子郵件。檢視範本