在 Azure Logic Apps 中接收和回應對工作流程的輸入 HTTPS 呼叫

適用于: Azure Logic Apps(取用 + 標準)

本操作指南示範如何使用要求內建觸發程式,建立邏輯應用程式工作流程,以接收和處理來自另一個服務的輸入 HTTPS 要求或呼叫。 當您的工作流程使用此觸發程式時,您就可以使用回應內建動作來回應 HTTPS 要求。

注意

只有在您使用要求觸發程式時,回應動作才能運作。

例如,此清單描述當您使用要求觸發程式和回應動作時,工作流程可以執行的一些工作:

  • 接收和回應內部部署資料庫中資料的 HTTPS 要求。

  • 接收並回應從另一個邏輯應用程式工作流程傳送的 HTTPS 要求。

  • 當外部 Webhook 事件發生時,觸發工作流程執行。

若要改為傳送傳出或輸出要求來執行工作流程,請使用 HTTP 內建觸發程式或 HTTP 內建動作

必要條件

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

  • 您想要接收輸入 HTTPS 要求的邏輯應用程式工作流程。 若要使用要求觸發程式啟動工作流程,您必須從空白工作流程開始。 若要使用回應動作,您的工作流程必須從要求觸發程式開始。

新增要求觸發程式

要求觸發程式會建立手動可呼叫的端點,只 處理 透過 HTTPS 的輸入要求。 當呼叫端傳送要求至此端點時,要求觸發程式會引發並執行工作流程。 如需如何呼叫此觸發程式的資訊,請檢閱 在 Azure Logic Apps 中使用 HTTPS 端點的呼叫、觸發程式或巢狀工作流程。

  1. Azure 入口網站 中,開啟您的取用邏輯應用程式,並在設計工具中開啟空白工作流程。

  2. 在設計工具上, 遵循這些一般步驟來尋找並新增名為「收到 HTTP 要求時」的 「要求」內建觸發程式。

  3. 觸發程式資訊方塊出現之後,請視需要提供下列資訊:

    屬性名稱 JSON 屬性名稱 必要 描述
    HTTP POST URL {none} Yes 儲存工作流程之後產生的端點 URL,並用於傳送觸發工作流程的要求。
    要求本文 JSON 架構 schema No JSON 架構,描述傳入要求主體中的屬性和值。 設計工具會使用此架構來產生要求中屬性的權杖。 如此一來,您的工作流程就可以剖析、取用和傳遞來自要求觸發程式的輸出到您的工作流程。

    如果您沒有 JSON 架構,您可以使用使用 範例承載來產生架構功能,以從範例承載產生架構

    下列範例顯示範例 JSON 架構:

    Screenshot showing Consumption workflow and Request trigger with example JSON schema.

    下列範例顯示完整的 JSON 架構範例:

    {
       "type": "object",
       "properties": {
          "account": {
             "type": "object",
             "properties": {
                "name": {
                   "type": "string"
                },
                "ID": {
                   "type": "string"
                },
                "address": {
                   "type": "object",
                   "properties": {
                      "number": {
                         "type": "string"
                      },
                      "street": {
                         "type": "string"
                      },
                      "city": {
                         "type": "string"
                      },
                      "state": {
                         "type": "string"
                      },
                      "country": {
                         "type": "string"
                      },
                      "postalCode": {
                         "type": "string"
                      }
                   }
                }
             }
          }
       }
    }
    

    當您輸入 JSON 架構時,設計工具會顯示提醒,以 在要求中包含 Content-Type 標頭,並將該標頭值設定為 application/json 。 如需詳細資訊,請參閱 處理內容類型

    Screenshot showing Consumption workflow, Request trigger, and reminder to include

    下列範例示範 Content-Type 標頭如何 以 JSON 格式顯示:

    {
       "Content-Type": "application/json"
    }
    

    若要產生以預期承載 (data) 為基礎的 JSON 架構,您可以使用 JSONSchema.net 之類的 工具,也可以遵循下列步驟:

    1. 在 [要求觸發程式] 中,選取 [ 使用範例承載來產生架構 ]。

      Screenshot showing Consumption workflow, Request trigger, and

    2. 輸入範例承載,然後選取 [ 完成 ]。

      Screenshot showing Consumption workflow, Request trigger, and sample payload entered to generate schema.

      下列範例顯示範例承載:

      {
         "account": {
            "name": "Contoso",
            "ID": "12345",
            "address": {
               "number": "1234",
               "street": "Anywhere Street",
               "city": "AnyTown",
               "state": "AnyState",
               "country": "USA",
               "postalCode": "11111"
            }
         }
      }
      
  4. 若要檢查輸入呼叫是否有符合您指定架構的要求本文,請遵循下列步驟:

    1. 若要強制執行輸入訊息,使架構描述的完全相同欄位,請在架構中新增 required 屬性並指定必要的欄位。 addtionalProperties新增 屬性,並將值設定為 false

      例如,下列架構會指定輸入訊息必須具有 msg 欄位,而不是任何其他欄位:

      {
         "properties": {
           "msg": {
              "type": "string"
           }
         },
         "type": "object",
         "required": ["msg"],
         "additionalProperties": false
      }
      
    2. 在 [要求觸發程式的標題列] 中,選取省略號按鈕 ( ... )。

    3. 在觸發程式的設定中,開啟 [ 架構驗證 ],然後選取 [ 完成 ]。

      如果輸入呼叫的要求本文不符合您的架構,觸發程式會 傳回 HTTP 400 不正確的要求 錯誤。

  5. 若要將其他屬性或參數新增至觸發程式,請開啟 [新增參數 ] 清單,然後選取您要新增的參數。

    屬性名稱 JSON 屬性名稱 必要 描述
    方法 method No 連入要求必須用來呼叫邏輯應用程式的方法
    相對路徑 relativePath No 邏輯應用程式端點 URL 可接受之參數的相對路徑

    下列範例會新增 Method 屬性:

    Screenshot showing Consumption workflow, Request trigger, and adding the

    Method 屬性會出現在觸發程式中,以便您可以從清單中選取方法。

    Screenshot showing Consumption workflow, Request trigger, and the

  6. 當您準備好時,請儲存您的工作流程。 在設計師工具列上選取儲存

    此步驟會產生 URL,可用來傳送觸發工作流程的要求。

  7. 若要複製產生的 URL,請選取 URL 旁的複製圖示。

    Screenshot showing Consumption workflow, Request trigger, and URL copy button selected.

    注意

    如果您想要在呼叫要求觸發程式時,在 URI 中包含雜湊符號或磅符號 ( # ),請改用這個編碼的版本: %25%23

現在,請新增另一個動作作為下一個步驟,以繼續建置您的工作流程。 例如,您可以新增 回應動作來回應要求,您可以使用此動作 來傳回自訂的回應,本文稍後會加以說明。

注意

您的工作流程只會 在有限的時間內 開啟輸入要求。 假設您的工作流程也包含回應動作,如果您的工作流程在此時間到期後未將回應傳回給呼叫端,您的工作流程會將 504 GATEWAY TIMEOUT 狀態傳回給呼叫端。 如果您的工作流程不包含回應動作,您的工作流程會立即將 202 ACCEPTED 狀態傳回 給呼叫端。

如需連入呼叫工作流程的安全性、授權和加密相關資訊,例如 傳輸層安全性 (TLS),先前稱為安全通訊端層 (SSL)、 Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth) 、向 Azure API 管理公開邏輯應用程式資源,或限制來自輸入呼叫的 IP 位址,請參閱 安全存取和資料 - 對要求型觸發程式的 輸入呼叫進行存取。

觸發程式輸出

下表列出要求觸發程式的輸出:

JSON 屬性名稱 資料類型 描述
Object 描述要求標頭的 JSON 物件
身體 Object 描述要求內文內容的 JSON 物件

新增回應動作

當您使用要求觸發程式接收輸入要求時,您可以使用回應內建動作,將承載結果模型化,並將承載結果傳回給呼叫端,此 動作只適用于 要求觸發程式。 這個結合要求觸發程式和回應動作會 建立要求-回應模式 。 除了 Foreach 迴圈和 Until 迴圈和平行分支之外,您可以在工作流程中的任何位置新增回應動作。

重要

  • 如果您的回應動作包含下列標頭,Azure Logic Apps 會自動從產生的回應訊息中移除這些標頭,而不會顯示任何警告或錯誤。 Azure Logic Apps 不會包含這些標頭,不過服務不會阻止您儲存具有這些標頭回應動作的工作流程。

    • Allow
    • Content-*除了 、 Content-EncodingContent-Type 以外的 Content-Disposition 標頭,當您使用 POST 和 PUT 作業時,但未包含在 GET 作業中
    • Cookie
    • Expires
    • Last-Modified
    • Set-Cookie
    • Transfer-Encoding
  • 如果您在具有分支的複雜工作流程中有一或多個回應動作,請確定工作流程在執行時間期間至少處理一個回應動作。 否則,如果略過所有回應動作,呼叫端就會 收到 502 不正確的閘道 錯誤,即使工作流程順利完成也一樣。

  • 在標準邏輯應用程式 狀態工作流程中,回應動作必須最後出現在您的工作流程中。 如果動作出現在任何其他位置,Azure Logic Apps 仍不會執行動作,直到所有其他動作都完成執行為止。

  1. 在工作流程設計工具上, 遵循這些一般步驟來尋找並新增名為 Response 的回應 內建動作。

    為了簡單起見,下列範例會顯示折迭的要求觸發程式。

  2. 在 [動作資訊] 方塊中,新增回應訊息的必要值。

    屬性名稱 JSON 屬性名稱 必要 描述
    狀態碼 statusCode Yes 回應中要傳回的狀態碼
    標題 headers No JSON 物件,描述要包含在回應中的一或多個標頭
    本文 body No 回應本文

    當您在任何文字欄位中選取時,動態內容清單會自動開啟。 然後,您可以選取代表工作流程中先前步驟中任何可用輸出的權杖。 您指定的架構屬性也會出現在這個動態內容清單中。 您可以選取要用於工作流程中的這些屬性。

    例如,在 [ 標頭 ] 欄位中,包含 Content-Type 作為金鑰名稱,並將索引鍵值 設定為 application/json ,如本文稍早所述。 針對 [ 本文 ] 方塊,您可以從動態內容清單中選取觸發程式本文輸出。

    Screenshot showing Azure portal, Consumption workflow, and Response action information.

    若要以 JSON 格式檢視標頭,請選取 [ 切換至文字檢視 ]。

    Screenshot showing Azure portal, Consumption workflow, and Response action headers in

  3. 若要新增動作的更多屬性,例如回應本文的 JSON 架構,請從 [新增參數 ] 清單中選取您要新增的參數。

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

測試工作流程

若要測試您的工作流程,請將 HTTP 要求傳送至產生的 URL。 例如,您可以使用 Postman 之類的 工具來傳送 HTTP 要求。 如需觸發程式基礎 JSON 定義以及如何呼叫此觸發程式的詳細資訊,請參閱下列主題: 要求觸發程式類型和 呼叫、觸發程式或巢狀工作流程與 Azure Logic Apps 中的 HTTP 端點。

安全性和驗證

在以要求觸發程式(但不是 Webhook 觸發程式)開頭的標準邏輯應用程式工作流程中,您可以使用 Azure Functions 布建來驗證該觸發程式使用受控識別所建立端點所建立的輸入呼叫。 此布建也稱為「 簡易驗證 」。 如需詳細資訊,請參閱 使用簡易驗證 在標準邏輯應用程式中觸發工作流程。

如需邏輯應用程式工作流程輸入呼叫的安全性、授權和加密詳細資訊,例如 傳輸層安全性 (TLS),先前稱為安全通訊端層 (SSL)、 Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth) 、向 Azure API 管理公開邏輯應用程式,或限制來自輸入呼叫的 IP 位址,請參閱 安全存取和資料 - 對要求型觸發程式的 輸入呼叫進行存取。

下一步