在工作流程中傳送 HTTP 要求
您可以建立工作流程,將 HTTP 要求傳送至外部網頁伺服器、API 端點以及 URL 網址。舉例來說,您可以建立一個可將訊息傳送至訊息服務的工作流程,或是可於專案管理應用程式中建立商品項目的工作流程。
您的 HTTP 要求可以支援以下 HTTP 方法:
- Get - 從伺服器傳送資訊要求。
- Delete - 從伺服器中刪除資源。
- Head - 擷取伺服器的 HTTP 回應標頭。
- Options - 擷取由伺服器支援的選項與功能。
- Patch - 局部更新伺服器上的資源。
- Put - 更新伺服器上的資源。
- Post - 建立或取代伺服器上的資源。
回應碼
Flow 送出您的 HTTP 要求後,最多會等待 30 秒讓您的應用程式回覆一個 HTTP 狀態碼。如果 30 秒後仍未收到應用程式回覆,Flow 就會關閉與應用程式的連結,並重新傳送要求。
收到回覆後,Flow 就會依照下列方式處理狀態碼:
狀態碼 | Flow 的處理方式 |
---|---|
200 成功 | Flow 認為您的應用程式已處理 POST 要求。 |
202 成功 | Flow 認為您的應用程式已接受 POST 要求。 |
4XX 用戶端錯誤 |
如果您的應用程式送出狀態碼 429 (即過多要求),但沒有加上「稍後重試」標頭,Flow 就會在 24 小時內以遞增區間持續重新傳送 HTTP 要求 (POST)。 如果您的應用程式送出狀態碼 429 (即過多要求),且有加上「稍後重試」標頭並指定等待時間,Flow 就會在等待時間 (以秒計算) 過後重新傳送 HTTP 要求 (POST)。
如果您的應用程式送出任何其他 4XX 狀態碼,Flow 就會認為傳送失敗而不會重新傳送 POST 要求。 |
5XX 伺服器錯誤 | Flow 會在 24 小時內以遞增區間持續重新傳送 HTTP 要求 (POST)。 |
其他狀態碼 | 如果您的應用程式回覆的狀態碼不在此表格中,Shopify Flow 就會認為傳送失敗而不會重新傳送 POST 要求。 |
安全性
為確保您的 http 要求安全性,我們建議您遵循下列最佳做法:
- 將
| url_encode
加到 HTTP 操作網址設定欄位路徑區段中的所有 Liquid 變數。接收要求的網頁伺服器必須支援解碼網址。
舉例而言,在 HTTP 操作網址設定欄位的路徑區段中,使用這種格式的 Liquid 變數:
https://example.com/customer/create?first_name={{ customer.firstName | url_encode }}&last_name={{ customer.lastName | url_encode }}
- 將
| url_encode
或| json
加到 HTTP 操作內文設定欄位中內文區段中的每個範本變數。接收要求的網頁伺服器必須支援解碼網址或 JSON 解碼。
舉例而言,當您有 Content-Type application/x-www-form-urlencoded header
,則採用這種格式的 | url_encode
:
{
"first name": "{{customer.firstName | url_encode}}",
"last name": "{{customer.lastName | url_encode}}"
}
當您有 Content-Type application/json header
,則採用這種格式的 | json
:
{
"first name": {{customer.firstName | json}},
"last name": {{customer.lastName | json}}
}
限制
請勿將此 HTTP 要求動作與使用 Flow 連結工具建立的應用程式動作混淆。這兩種功能都會傳送 HTTP 要求,但兩者之間有差別。例如,此動作送出的 HTTP 要求不包含頁首中的 action_run_id
。
此動作會以「要求已處理」的方式處理 202 狀態碼,這是已知的問題。
傳送 HTTP 要求
- 在工作流程中,按一下「新增動作」。
- 選擇「傳送 HTTP 要求」。
-
在「HTTP 方法」區段中,按照以下方式填寫欄位:
- 選擇一個 HTTP 方法。
- 在「網址」欄位輸入伺服器的 URL。
- 選用:如果您傳送資訊的目標 API 要求將資訊新增至網址,請執行以下操作: - 如果 API 要求提供標頭資訊,請在「標頭」表格中指定參數,以將參數傳入網址。如果 API 可讓您選擇將資訊新增到標頭或網址路徑,請使用標頭,因為這麼做比起將資訊新增至網址路徑更加安全。
- 如果 API 要求提供網址路徑資訊,請將「範本變數」新增至網址的路徑部分。網址的路徑部分位於第三個正斜線之後。舉例來說,如果網址是
https://shopify.com/{{ order.id | url_encode }}
,則路徑部分就是{{ order.id | url_encode }}
。
在「標頭」欄位中新增任何索引鍵/值組。您也可以為索引鍵或值新增範本變數。
在「內文」欄位新增想要傳送到伺服器的內容。傳送訊息時,建議您可以提供相關的顧客、訂單或產品詳細資訊。如要提供這些資訊,請使用範本變數。
按一下「儲存」。