接收及回應對 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 {無} Yes 在儲存工作流程之後所產生的端點 URL,用於傳送觸發工作流程的要求。
    要求本文 JSON 結構描述 schema No JSON 結構描述,用於描述傳入要求本文中的屬性和值。 設計工具會使用此結構描述,為要求中的屬性產生權杖。 這樣,工作流程就可以剖析、取用要求觸發程序的輸出並順帶將其傳遞到工作流程中。

    如果您沒有 JSON 結構描述,則可以使用 [使用範例承載欄位來產生結構描述] 功能從範例承載欄位中產生結構描述。

    以下範例顯示一個範例 JSON 結構描述:

    顯示取用工作流程以及含範例 JSON 結構描述的要求觸發程序的螢幕擷取畫面。

    下列範例顯示完整的範例 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。 如需詳細資訊,請參閱處理內容類型

    螢幕擷取畫面:顯示取用工作流程、要求觸發程序,以及包括

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

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

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

    1. 要求觸發程序中,選取 [使用範例承載來產生結構描述]

      螢幕擷取畫面:顯示取用工作流程、要求觸發程序,以及已選取 [使用範例承載來產生結構描述]。

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

      顯示取用工作流程、要求觸發程序,以及為產生結構描述而輸入的範例承載欄位的螢幕擷取畫面。

      下列範例顯示範例承載欄位:

      {
         "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 Bad Request 的錯誤。

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

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

    下列範例新增了 [方法] 屬性:

    顯示取用工作流程、要求觸發程序及新增「方法」參數的螢幕擷取畫面。

    [方法] 屬性會出現在觸發程序中,讓您可以從清單中選取方法。

    螢幕擷取畫面:顯示取用工作流程、要求觸發程序,以及開啟並選取方法的 [方法] 清單。

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

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

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

    顯示取用工作流程、要求觸發程序及選取了 URL 複製按鈕的螢幕擷取畫面。

    注意

    如果您想要在呼叫要求觸發程序時,在 URI 中包含井字號 (#),請改用此編碼版本:%25%23

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

注意

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

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

觸發程序輸出

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

JSON 屬性名稱 資料類型 描述
headers Object JSON 物件,描述要求的標頭
body Object JSON 物件,描述要求的本文內容

新增回應動作

當您使用要求觸發程序接收輸入要求時,您可以對回應進行建模,並使用回應內建動作來將承載欄位結果傳回給呼叫端 (適用於要求觸發程序)。 這種與要求觸發程序和回應動作的組合會建立要求-回應模式。 除了 Foreach 迴圈和 Until 迴圈和平行分支之外,您可以在工作流程中的任何位置新增回應動作。

重要

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

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

  • 在標準邏輯應用程式 stateless 工作流程中,回應動作必須最後出現在您的工作流程中。 如果動作出現在任何其他地方,在所有其他動作完成執行之前,Azure Logic Apps 仍不會執行動作。

  1. 在工作流程設計工具中,依照這些一般步驟尋找和新增名為回應的回應內建動作

    為了簡單起見,下列範例會顯示已摺疊的要求觸發程序。

  2. 在動作資訊方塊中,新增回應訊息所需的值。

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

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

    例如,在 [標頭] 方塊中納入 Content-Type 作為索引鍵名稱,並將索引鍵的值設為 application/json,如本文先前所述。 在 [本文] 方塊中,您可以從動態內容清單中選取觸發程序本文輸出。

    顯示 Azure 入口網站、取用工作流程和回應動作資訊的螢幕擷取畫面。

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

    螢幕擷取畫面:顯示 Azure 入口網站、取用工作流程,以及 [切換至文字] 檢視中的回應動作標頭。

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

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

測試工作流程

若要觸發工作流程,請使用 HTTP 要求工具和其指示,將 HTTP 要求傳送至要求觸發程序所產生的 URL,包括要求觸發程序預期的方法。

如需此觸發程序的基礎 JSON 定義及如何呼叫此觸發程序的詳細資訊,請參閱這些主題:要求觸發程序類型在 Azure Logic Apps 中使用 HTTP 端點來呼叫、觸發或巢狀工作流程

安全性和驗證

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

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

下一步