接收及回應對 Azure Logic Apps 中的工作流程進行的輸入 HTTPS 呼叫
適用於:Azure Logic Apps (使用量 + 標準)
本操作指南說明如何建立一個邏輯應用程式工作流程,並使其可使用要求內建觸發程序接收及處理來自另一個服務的輸入 HTTPS 要求或呼叫。 當您的工作流程使用此觸發程序時,您即可使用回應內建動作來回應 HTTPS 要求。
注意
只有在使用要求觸發程序時,回應動作才能運作。
例如,此清單描述在您使用要求觸發程序和回應動作時,工作流程可執行的一些工作:
接收和回應以內部部署資料庫中的資料為對象的 HTTPS 要求。
接收及回應從另一個邏輯應用程式工作流程傳送的 HTTPS 要求。
在發生外部 Webhook 事件時觸發工作流程。
若要改為透過傳送傳出或輸出要求來執行工作流程,請使用 HTTP 內建觸發程序或 HTTP 內建動作。
必要條件
Azure 帳戶和訂用帳戶。 如果您沒有訂用帳戶,您可以註冊免費的 Azure 帳戶。
您想要在其中接收輸入 HTTPS 要求的邏輯應用程式工作流程。 若要使用要求觸發程序來啟動工作流程,您必須從空白的工作流程中開始。 若要使用回應動作,工作流程必須從要求觸發程序中開始。
安裝或使用可傳送 HTTP 要求以測試解決方案的工具,例如:
- Visual Studio Code 搭配 Visual Studio Marketplace 的延伸模組
- PowerShell Invoke-RestMethod
- Microsoft Edge - 網路主控台工具
- Bruno
- curl
警告
如果您有敏感資料,例如認證、秘密、存取權杖、API 金鑰和其他類似資訊,請務必使用一項工具,以必要的安全性功能保護資料、離線或本機運作、不將資料同步處理至雲端,而且不需要您登入線上帳戶。 如此一來,您就可以降低向公眾公開敏感資料的風險。
新增要求觸發程序
要求觸發程序會建立一個可手動呼叫的端點,且此端點僅處理透過 HTTPS 的輸入要求。 當呼叫者將要求傳送至此端點時,要求觸發程序即會引發,並執行工作流程。 有關如何呼叫此觸發程序的資訊,請檢閱在 Azure Logic Apps 中使用 HTTPS 端點來呼叫、觸發或內嵌工作流程。
在 Azure 入口網站上,於設計工具中開啟您的使用量邏輯應用程式和空白工作流程。
在觸發程序資訊方塊出現後,視需要提供下列資訊:
屬性名稱 JSON 屬性名稱 必要 描述 HTTP POST URL {無} Yes 在儲存工作流程之後所產生的端點 URL,用於傳送觸發工作流程的要求。 要求本文 JSON 結構描述 schema
No 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 之類的工具,也可以遵循下列步驟:
在要求觸發程序中,選取 [使用範例承載來產生結構描述]。
輸入範例承載,然後選取 [完成]。
下列範例顯示範例承載欄位:
{ "account": { "name": "Contoso", "ID": "12345", "address": { "number": "1234", "street": "Anywhere Street", "city": "AnyTown", "state": "AnyState", "country": "USA", "postalCode": "11111" } } }
若要檢查輸入呼叫是否有符合您指定結構描述的要求本文,請遵循下列步驟:
若要強制輸入訊息具有結構描述所描述的相同確切欄位,請在結構描述中新增
required
屬性並指定必要的欄位。 新增addtionalProperties
屬性並將值設定為false
。例如,下列結構描述指定輸入訊息必須具有
msg
欄位,而不是具有任何其他欄位:{ "properties": { "msg": { "type": "string" } }, "type": "object", "required": ["msg"], "additionalProperties": false }
在要求觸發程序的標題列中,選取省略號按鈕 (...)。
在觸發程序的設定中,開啟 [結構描述驗證],然後選取 [完成]。
如果輸入呼叫的要求本文不符合您的結構描述,觸發程序會傳回 HTTP 400 Bad Request 的錯誤。
若要將其他屬性或參數新增至觸發程序,請開啟 [新增參數] 清單,然後選取您要新增的參數。
屬性名稱 JSON 屬性名稱 必要 描述 方法 method
No 傳入要求在呼叫邏輯應用程式時必須使用的方法 相對路徑 relativePath
No 參數的相對路徑,指邏輯應用程式的端點 URL 可接受的參數 下列範例新增了 [方法] 屬性:
[方法] 屬性會出現在觸發程序中,讓您可以從清單中選取方法。
準備後,請儲存您的工作流程。 在設計師工具列上選取儲存。
此步驟會產生可用於傳送觸發工作流程的要求的 URL。
若要複製所產生的 URL,請選取 URL 旁邊的複製圖示。
注意
如果您想要在呼叫要求觸發程序時,在 URI 中包含井字號 (#),請改用此編碼版本:
%25%23
現在,透過新增另一個動作作為下一步來繼續建置您的工作流程。 例如,您可以新增回應動作來回應要求,此動作可用來傳回自訂的回應,本文稍後會說明。
注意
您的工作流只會在有限的時間內讓輸入要求保持處於開啟的狀態。 假設您的工作流程也包含回應動作 (如果您的工作流程在此時間到期後未將回應傳回給呼叫端),則您的工作流程會將 504 GATEWAY TIMEOUT 狀態傳回給呼叫端。 如果您的工作流程未包含回應動作,則您的工作流程會立即將 202 ACCEPTED 狀態傳回給呼叫端。
如需工作流程輸入呼叫的安全性、驗證和加密相關信息,例如傳輸層安全性 (TLS),先前稱為安全套接字層 (SSL),OAuth 搭配 Microsoft Entra ID、共用存取簽章 (SAS)、向 Azure API 管理 公開邏輯應用程式資源,或限制來自輸入呼叫的 IP 位址,請參閱安全存取和數據 - 對要求型觸發程式的輸入呼叫進行存取。
觸發程序輸出
下表列出要求觸發程序的輸出:
JSON 屬性名稱 | 資料類型 | 描述 |
---|---|---|
headers | Object | JSON 物件,描述要求的標頭 |
body | Object | JSON 物件,描述要求的本文內容 |
新增回應動作
當您使用要求觸發程序接收輸入要求時,您可以對回應進行建模,並使用回應內建動作來將承載欄位結果傳回給呼叫端 (只適用於要求觸發程序)。 這種與要求觸發程序和回應動作的組合會建立要求-回應模式。 除了 Foreach 迴圈和 Until 迴圈和平行分支之外,您可以在工作流程中的任何位置新增回應動作。
重要
如果您的回應動作包含下列標頭,Azure Logic Apps 會自動從產生的回應訊息中移除這些標頭,但不會顯示任何的警告或錯誤: 雖然服務不會阻止您儲存具有含這些標頭的回應動作的工作流程,但 Azure Logic Apps 也不會包含這些標頭。
Allow
Content-*
標頭 (除了在您使用 POST 和 PUT 作業時所使用的但不包括在 GET 作業中的Content-Disposition
、Content-Encoding
和Content-Type
之外)Cookie
Expires
Last-Modified
Set-Cookie
Transfer-Encoding
如果您在具有分支的複合工作流程中有一或多個回應動作,請確定工作流程在執行階段期間至少處理一個回應動作。 否則,如果略過了所有的回應動作,則呼叫端會收到 502 Bad Gateway 的錯誤,即使工作流程順利完成也一樣。
在標準邏輯應用程式 stateless 工作流程中,回應動作必須最後出現在您的工作流程中。 如果動作出現在任何其他地方,在所有其他動作完成執行之前,Azure Logic Apps 仍不會執行動作。
在工作流程設計工具中,依照這些一般步驟尋找和新增名為回應的回應內建動作。
為了簡單起見,下列範例會顯示已摺疊的要求觸發程序。
在動作資訊方塊中,新增回應訊息所需的值。
屬性名稱 JSON 屬性名稱 必要 描述 狀態碼 statusCode
Yes 要在回應中傳回的狀態碼 標題 headers
No JSON 物件,描述要包含在回應中的一個或多個標頭 本文 body
No 回應本文 當您在任何文字欄位中選取時,動態內容清單會自動開啟。 然後,您可以選取權杖,以代表工作流程中先前的步驟可用的輸出。 您指定的結構描述中的屬性也會出現在這個動態內容清單中。 您可以選取這些屬性,以將其用於工作流程中。
例如,在 [標頭] 方塊中納入 Content-Type 作為索引鍵名稱,並將索引鍵的值設為 application/json,如本文先前所述。 在 [本文] 方塊中,您可以從動態內容清單中選取觸發程序本文輸出。
若要以 JSON 格式來檢視標頭,請選取 [切換至文字檢視]。
若要為動作新增更多的屬性 (例如回應本文的 JSON 結構描述),請從 [新增參數] 清單中選取您要新增的參數。
完成後,請儲存您的工作流程。 在設計師工具列上選取儲存。
測試工作流程
若要觸發工作流程,請使用 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 位址,請參閱安全存取和資料 - 存取要求型觸發程序的輸入呼叫。