分享方式:


從 Azure Logic Apps 中的工作流程呼叫外部 HTTP 或 HTTPS 端點

適用於:Azure Logic Apps (使用量 + 標準)

有些案例可能會要求您建立邏輯應用程式工作流程,以透過 HTTP 或 HTTPS 將輸出要求傳送至其他服務或系統上的端點。 例如,假設您想要藉由檢查特定排程的端點來監視網站的服務端點。 當特定事件在該端點發生時,例如您的網站關閉時,該事件會觸發您的工作流程,並在該工作流程中執行動作。

注意

若要建立可改為接收和回應輸入 HTTPS 呼叫的工作流程,請參閱在 Azure Logic Apps 中使用 HTTPS 端點和內建的要求觸發程式和回應動作,建立您可以呼叫、觸發或巢狀的工作流程。

本指南示範如何使用 HTTP 觸發程式和 HTTP 動作,讓您的工作流程可以將輸出呼叫傳送至其他服務和系統,例如:

  • 若要檢查或 輪詢 週期性排程上的端點, 請將 HTTP 觸發程式 新增為工作流程中的第一個步驟。 每次觸發程式檢查端點時,觸發程式都會呼叫或傳送 要求 給端點。 端點的回應會決定您的工作流程是否執行。 觸發程式會將端點回應中的任何內容傳遞至工作流程中的動作。

  • 若要從工作流程中的任何位置呼叫端點, 請新增 HTTP 動作。 端點的回應會決定工作流程剩餘動作的執行方式。

必要條件

  • Azure 帳戶和訂用帳戶。 如果您沒有 Azure 訂用帳戶,請先註冊免費的 Azure 帳戶

  • 您要呼叫之目的地端點的 URL

  • 您要從中呼叫目的地端點的邏輯應用程式工作流程。 若要從 HTTP 觸發程式開始,您需要空白工作流程。 若要使用 HTTP 動作,請使用您想要的任何觸發程式來啟動您的工作流程。 此範例會使用 HTTP 觸發程式作為第一個步驟。

連接器技術參考

如需觸發程式和動作參數的技術資訊,請參閱下列各節:

新增 HTTP 觸發程式

此內建觸發程式會針對端點對指定的 URL 進行 HTTP 呼叫,並傳回回應。

  1. Azure 入口網站中,於設計工具中開啟您的標準邏輯應用程式資源和空白工作流程。

  2. 請遵循下列一般步驟,將名為 HTTP 的內建觸發程式新增至您的工作流程

    此範例會將觸發程式重新命名為 HTTP 觸發程式 - 呼叫端點 URL ,讓觸發程式具有更具描述性的名稱。 此外,此範例稍後會新增 HTTP 動作,而且工作流程中的作業名稱必須是唯一的。

  3. 提供您想要包含在目的地端點呼叫中之 HTTP 觸發程式參數的值。 針對您希望觸發程式檢查目的地端點的頻率設定週期。

    如果您選取 [無] 以外的驗證類型,驗證設定會根據您的選擇而有所不同。 如需 HTTP 可用驗證類型的詳細資訊,請參閱下列主題:

  4. 若要新增其他可用的參數,請開啟 [ 進階參數 ] 列表,然後選取您想要的參數。

  5. 新增您想要在觸發程式引發時執行的任何其他動作。

  6. 完成後,請儲存您的工作流程。 在設計師工具列上選取儲存

新增 HTTP 動作

這個內建動作會呼叫端點的指定URL並傳回回應。

  1. Azure 入口網站中,在設計工具中開啟您的使用量邏輯應用程式和工作流程。

    此範例會使用上一節中新增的 HTTP 觸發程式作為第一個步驟。

  2. 請遵循下列一般步驟,將名為 HTTP 的內建動作新增至您的工作流程

    此範例會將動作重新命名為 HTTP 動作 - 呼叫端點 URL ,讓步驟具有更具描述性的名稱。 此外,工作流程中的作業名稱必須是唯一的。

  3. 提供您想要包含在對目的地端點呼叫中的 HTTP 動作參數

    如果您選取 [無] 以外的驗證類型,驗證設定會根據您的選擇而有所不同。 如需 HTTP 可用驗證類型的詳細資訊,請參閱下列主題:

  4. 若要新增其他可用的參數,請開啟 [ 進階參數 ] 列表,然後選取您想要的參數。

  5. 完成後,請儲存您的工作流程。 在設計師工具列上選取儲存

觸發程式和動作輸出

以下是 HTTP 觸發程式或動作輸出的詳細資訊,其會傳回下列資訊:

屬性 類型​ 描述
headers JSON 物件 要求中的標頭
body JSON 物件 具有要求內文內容的物件
status code 整數 來自要求的狀態代碼
狀態碼 描述
200 確定
202 已接受
400 不正確的要求
401 未經授權
403 禁止
404 找不到
500 內部伺服器錯誤。 發生未知的錯誤。

輸出呼叫的 URL 安全性

如需來自工作流程之輸出呼叫加密、安全性和授權的資訊,例如 傳輸層安全性 (TLS),先前稱為安全套接字層 (SSL)、自我簽署憑證或 Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth),請參閱 安全存取和數據 - 對其他服務和系統的輸出呼叫存取。

單一租用戶環境的驗證

如果您在單一租使用者 Azure Logic Apps 中有標準邏輯應用程式資源,而且您想要搭配下列任何驗證類型使用 HTTP 作業,請務必完成對應驗證類型的額外設定步驟。 否則,呼叫將會失敗。

  • TLS/SSL 憑證:新增應用程式設定, WEBSITE_LOAD_ROOT_CERTIFICATES並將值設定為 TLS/SSL 憑證的指紋。

  • 具有「憑證」認證的用戶端憑證或 Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth):新增應用程式設定, WEBSITE_LOAD_USER_PROFILE並將值設定為 1

TLS/SSL 憑證驗證

  1. 在邏輯應用程式資源的應用程式設定中,新增或更新應用程式設定 WEBSITE_LOAD_ROOT_CERTIFICATES

  2. 針對設定值,提供TLS/SSL 憑證的指紋作為要信任的跟證書。

    "WEBSITE_LOAD_ROOT_CERTIFICATES": "<thumbprint-for-TLS/SSL-certificate>"

例如,如果您正在 Visual Studio Code 中工作,請遵循下列步驟:

  1. 開啟邏輯應用程式專案的 local.settings.json 檔案。

  2. 在 JSON 物件中 Values ,新增或更新 WEBSITE_LOAD_ROOT_CERTIFICATES 設定:

    {
       "IsEncrypted": false,
       "Values": {
          <...>
          "AzureWebJobsStorage": "UseDevelopmentStorage=true",
          "WEBSITE_LOAD_ROOT_CERTIFICATES": "<thumbprint-for-TLS/SSL-certificate>",
          <...>
       }
    }
    

    注意

    若要尋找指紋,請遵循下列步驟:

    1. 在您的邏輯應用程式資源功能表上,選取 [設定] 下的 [TLS/SSL 設定>] [私鑰憑證][.pfx][公鑰憑證][.cer]。

    2. 尋找您想要使用的憑證,並複製指紋。

    如需詳細資訊,請參閱尋找指紋 - Azure App 服務

如需詳細資訊,請參閱下列文件:

用戶端憑證或 Microsoft Entra ID OAuth 搭配「憑證」認證類型驗證

  1. 在邏輯應用程式資源的應用程式設定中,新增或更新應用程式設定 WEBSITE_LOAD_USER_PROFILE

  2. 設定值,指定 1

    "WEBSITE_LOAD_USER_PROFILE": "1"

例如,如果您正在 Visual Studio Code 中工作,請遵循下列步驟:

  1. 開啟邏輯應用程式專案的 local.settings.json 檔案。

  2. 在 JSON 物件中 Values ,新增或更新 WEBSITE_LOAD_USER_PROFILE 設定:

    {
       "IsEncrypted": false,
       "Values": {
          <...>
          "AzureWebJobsStorage": "UseDevelopmentStorage=true",
          "WEBSITE_LOAD_USER_PROFILE": "1",
          <...>
       }
    }
    

如需詳細資訊,請參閱下列文件:

具有 multipart/form-data type 的內容

若要處理類型 multipart/form-data 為 HTTP 要求的內容,您可以使用這個格式,將包含 $content-type$multipart 屬性的 JSON 物件新增至 HTTP 要求的本文。

"body": {
   "$content-type": "multipart/form-data",
   "$multipart": [
      {
         "body": "<output-from-trigger-or-previous-action>",
         "headers": {
            "Content-Disposition": "form-data; name=file; filename=<file-name>"
         }
      }
   ]
}

例如,假設您有一個工作流程,該工作流程會使用支援 multipart/form-data 該類型的網站 API,將 Excel 檔案的 HTTP POST 要求傳送至網站。 下列範例顯示此動作的顯示方式:

標準工作流程

顯示標準工作流程的螢幕快照,其中包含 HTTP 動作和多部分表單數據。

使用量工作流程

此螢幕快照顯示具有 HTTP 動作和多部分表單數據的取用工作流程。

以下是在基礎工作流程定義中顯示 HTTP 動作 JSON 定義的相同範例:

"HTTP_action": {
   "inputs": {
      "body": {
         "$content-type": "multipart/form-data",
         "$multipart": [
            {
               "body": "@trigger()",
               "headers": {
                  "Content-Disposition": "form-data; name=file; filename=myExcelFile.xlsx"
               }
            }
         ]
      },
      "method": "POST",
      "uri": "https://finance.contoso.com"
   },
   "runAfter": {},
   "type": "Http"
}

具有 application/x-www-form-urlencoded 類型的內容

若要在本文中提供 HTTP 要求的表單 URLencoded 數據,您必須指定數據具有 application/x-www-form-urlencoded 內容類型。 在 HTTP 觸發程式或動作中 content-type ,新增標頭。 標頭值設定為 application/x-www-form-urlencoded

例如,假設您有一個邏輯應用程式,可將 HTTP POST 要求傳送至支援 application/x-www-form-urlencoded 類型的網站。 以下是此動作的外觀:

標準工作流程

此螢幕快照顯示標準工作流程,並將 HTTP 要求和內容類型標頭設定為 application/x-www-form-urlencoded。

使用量工作流程

此螢幕快照顯示已將 HTTP 要求和內容類型標頭設定為 application/x-www-form-urlencoded 的取用工作流程。

異步要求-回應行為

針對 多租使用者和單一租使用者 Azure Logic Apps 中的具 狀態工作流程,所有 HTTP 型動作都會遵循標準 異步操作模式 作為默認行為。 此模式指定 HTTP 動作呼叫或傳送要求至端點、服務、系統或 API 之後,接收者會立即傳回 「202 ACCEPTED」 回應。 此程式代碼會確認接收者已接受要求,但尚未完成處理。 回應可以包含 location 標頭,指定 URI 和重新整理標識符,呼叫端可用來輪詢或檢查異步要求的狀態,直到接收者停止處理並傳回 “200 OK” 成功回應或其他非 202 回應為止。 不過,呼叫端不需要等候要求完成處理,而且可以繼續執行下一個動作。 如需詳細資訊,請參閱 異步微服務整合會強制執行微服務自主性

對於 單一租使用者 Azure Logic Apps 中的無 狀態工作流程,HTTP 型動作不會使用異步操作模式。 相反地,它們只會以同步方式執行、依原樣傳回 「202 ACCEPTED」 回應,然後繼續進行工作流程執行中的下一個步驟。 如果回應包含 location 標頭,則無狀態工作流程不會輪詢指定的 URI 來檢查狀態。 若要遵循標準 異步操作模式,請改用具狀態工作流程。

  • HTTP 動作的基礎 JavaScript 物件表示法 (JSON) 定義會隱含地遵循異步操作模式。

  • HTTP 動作而非觸發程式具有 預設啟用的異步模式 設定。 此設定指定呼叫端不會等待處理完成,而且可以繼續進行下一個動作,但會繼續檢查狀態,直到處理停止為止。 如果停用,此設定會指定呼叫端等候處理完成,再繼續進行下一個動作。

    若要尋找 異步模式 設定,請根據您有標準或取用工作流程,遵循下列步驟:

    標準工作流程*

    1. 在工作流程設計工具中,選取 HTTP 動作。 在開啟的資訊窗格中,選取 [設定]。

    2. 在 [網络] 底 ,尋找 [ 異步模式] 設定。

    使用量工作流程

    1. 在工作流程設計工具的 HTTP 動作標題列上,選取省略號 (...) 按鈕,以開啟動作的設定。

    2. 尋找異步 模式 設定。

停用異步操作

有時候,您可能會想要在特定案例中停用 HTTP 動作的異步行為,例如,當您想要:

關閉異步模式設定

  1. 在工作流程設計工具中,選取 HTTP 動作,然後在開啟的資訊窗格中,選取 [設定]。

  2. 在 [網络] 底 ,尋找 [ 異步模式] 設定。 如果已啟用,請關閉設定。

停用動作 JSON 定義的異步模式

在 HTTP 動作的基礎 JSON 定義中,將作業選項新增"DisableAsyncPattern"至動作的定義,讓動作改為遵循同步作業模式。 如需詳細資訊,請參閱 同步作業模式中的執行動作。

避免長時間執行工作的 HTTP 逾時

HTTP 要求有逾 時限制。 如果您有長時間執行的 HTTP 動作因為此限制而逾時,您有下列選項:

  • 停用 HTTP 動作的異步操作模式 ,讓動作不會持續輪詢或檢查要求的狀態。 相反地,動作會等候接收者回應要求完成處理之後的狀態和結果。

  • 將 HTTP 動作取代為 HTTP Webhook 動作,以等候接收者回應要求完成處理之後的狀態和結果。

使用 Retry-After 標頭設定重試嘗試之間的間隔

若要指定重試嘗試之間的秒數,您可以將標頭新增 Retry-After 至 HTTP 動作回應。 例如,如果目的地端點傳回 429 - Too many requests 狀態代碼,您可以在重試之間指定較長的間隔。 標頭 Retry-After 也適用於 202 - Accepted 狀態代碼。

以下是顯示包含 Retry-After的 HTTP 動作回應的相同範例:

{
    "statusCode": 429,
    "headers": {
        "Retry-After": "300"
    }
}

分頁支援

有時候,目的地服務會一次傳回一頁的結果來回應。 如果回應使用 nextLink 或 @odata.nextLink 屬性指定下一頁,您可以在 HTTP 動作上開啟分頁設定。 此設定會導致 HTTP 動作自動遵循這些連結並取得下一頁。 不過,如果回應以任何其他標記指定下一頁,您可能必須將迴圈新增至工作流程。 讓此迴圈遵循該標籤,並手動取得每個頁面,直到標籤為 Null 為止。

停用檢查位置標頭

某些端點、服務、系統或 API 會傳回 202 ACCEPTED 沒有標頭的 location 回應。 若要避免在標頭不存在時 location 持續檢查要求狀態的 HTTP 動作,您可以擁有下列選項:

  • 停用 HTTP 動作的異步操作模式 ,讓動作不會持續輪詢或檢查要求的狀態。 相反地,動作會等候接收者回應要求完成處理之後的狀態和結果。

  • 將 HTTP 動作取代為 HTTP Webhook 動作,以等候接收者回應要求完成處理之後的狀態和結果。

已知問題

省略的 HTTP 標頭

如果 HTTP 觸發程式或動作包含這些標頭,Azure Logic Apps 會從產生的要求訊息中移除這些標頭,而不會顯示任何警告或錯誤:

  • Accept-* 標頭除外 Accept-version
  • Allow
  • Content-*除了 、 Content-EncodingContent-Type以外Content-Disposition,當您使用 POST 和 PUT 作業時,會接受這些標頭。 不過,當您使用 GET 作業時,Azure Logic Apps 會卸除這些標頭。
  • Cookie 標頭,但 Azure Logic Apps 會接受您使用 Cookie 屬性指定的任何值。
  • Expires
  • Host
  • Last-Modified
  • Origin
  • Set-Cookie
  • Transfer-Encoding

雖然 Azure Logic Apps 不會阻止您儲存使用這些標頭使用 HTTP 觸發程式或動作的邏輯應用程式,但 Azure Logic Apps 會忽略這些標頭。

回應內容不符合預期的內容類型

如果 HTTP 動作呼叫後端 API Content-Type 且標頭設定為 application/json,但來自後端的回應實際上不包含 JSON 格式的內容,則 HTTP 動作會擲回 BadRequest 錯誤,這會失敗內部 JSON 格式驗證。

下一步