适用范围:Azure 逻辑应用(消耗型 + 标准型)
本指南演示如何创建一个逻辑应用工作流,该工作流可以使用 请求 内置触发器从另一个服务接收和处理入站 HTTPS 请求。 当工作流使用此触发器时,工作流可以使用 响应 内置操作来响应 HTTPS 调用。
Note
仅当使用请求触发器时,“响应”作才有效。
例如,使用 请求 触发器和 响应 作时,工作流可以执行以下任务:
接收并响应对本地数据库中数据的 HTTPS 请求。
接收并响应从另一个逻辑应用工作流发送的 HTTPS 请求。
发生外部 Webhook 事件时触发工作流运行。
若要改为通过发送传出或出站请求来运行工作流,请使用 HTTP 内置触发器或 HTTP 内置操作。
Prerequisites
Azure 帐户和订阅。 如果没有订阅,可以注册试用版 Azure 订阅。
要接收入站 HTTPS 请求的工作流的逻辑应用资源。
若要使用 请求 触发器启动工作流,需要有一个空白工作流。 若要使用 响应 作,工作流必须以 请求 触发器开头。
如果没有逻辑应用资源和工作流,请立即按照所需的逻辑应用的步骤创建它们:
安装或使用可发送 HTTP 请求以测试解决方案的工具,例如:
- Visual Studio Code,具有来自 Visual Studio Marketplace 的扩展
- PowerShell Invoke-RestMethod
- Microsoft Edge - 网络控制台工具
- Bruno
- Curl
Caution
对于具有敏感数据(例如凭据、机密、访问令牌、API 密钥和其他类似信息)的情况,请务必使用具有必要安全功能可保护数据的工具,该工具可脱机或本地工作,不会将数据同步到云,并且不需要登录联机帐户。 这样可以降低向公众公开敏感数据的风险。
添加“请求”触发器
“请求”触发器创建可手动调用的终结点,该终结点仅处理 HTTPS 上的入站请求。 当调用方将请求发送到此终结点时,“请求”触发器会触发并运行工作流。 有关如何调用此触发器的信息,请参阅 Azure 逻辑应用中具有 HTTPS 终结点的调用、触发器或嵌套工作流。
在 Azure 门户中,打开你的消耗逻辑应用资源。
在边栏菜单中,在 “开发工具”下,选择设计器以打开空白工作流。
按照添加触发器的常规步骤,将名为“当收到 HTTP 请求时”的“请求”内置触发器添加到你的工作流中。
显示触发器信息框后,提供以下信息:
Property name JSON 属性名称 Required Description HTTP URL {none} 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 架构,可以使用 json-schema.org 等工具,也可以执行以下步骤:
若要检查入站调用是否具有与指定架构匹配的请求正文,请执行以下步骤:
要强制入站消息具有与架构描述的完全相同的字段,请在架构中添加
required
属性并指定必填字段。 添加属性additionalProperties
,并将值设置为 false。例如,以下架构指定入站消息必须具有
msg
字段(而不是任何其他字段):{ "properties": { "msg": { "type": "string" } }, "type": "object", "required": ["msg"], "additionalProperties": false }
在设计器中,选择“请求”触发器。 在打开的信息窗格中,选择“设置”选项卡。
展开“数据处理”,并将“架构验证”设置为“开”。
如果入站调用的请求正文与架构不匹配,则触发器会返回“HTTP 400 错误请求”错误。
从 “方法” 列表中选择触发器期望用于处理入站请求的方法。
如果触发器存在任何其他参数,请打开 “高级参数 ”列表,然后选择所需的参数。
准备就绪后,保存工作流。 在设计器工具栏上选择“保存”。
此步骤将生成 URL,其可用于发送触发工作流的请求。
若要复制生成的 URL,请选择 URL 旁边的复制图标。
Note
若要在调用请求触发器时在 URI 中包含哈希符号或井号 (#),请改用此编码版本:
%25%23
现在,在下一步中添加其他操作,以继续生成工作流。 例如,可以通过添加响应操作来响应请求,该响应操作可用于返回自定义响应,本文后面部分将介绍此相关内容。
Note
工作流仅在有限的时间内使入站请求保持打开状态。 假设工作流还包含“响应”操作,如果工作流在此有限时间到期后没有向调用方返回响应,则工作流会向调用方返回“504 网关超时”状态。 如果工作流不包含“响应”操作,则工作流会立即向调用方返回“202 已接受”状态。
有关对工作流的入站调用(例如传输层安全性(TLS)、 具有Microsoft Entra ID、 共享访问签名(SAS)的 OAuth、使用 Azure API 管理公开逻辑应用资源或限制源自入站调用的 IP 地址的信息,请参阅 Access 以获取对基于请求的触发器的入站调用。
Trigger outputs
下表列出了请求触发器的输出:
JSON 属性名称 | Data type | Description |
---|---|---|
headers |
Object | 描述请求中的标头的 JSON 对象 |
body |
Object | 描述请求中的正文内容的 JSON 对象 |
添加响应操作
使用请求触发器接收入站请求时,可以使用响应内置操作对响应进行建模,并将有效负载结果发送回调用方。响应内置操作仅适用于请求触发器。 此与 请求 触发器和 响应 作的组合将创建请求-响应模式。 除了在 For Each 循环 、Until 循环 和并行分支中,在工作流的任何位置都可以添加 响应动作。
Important
如果 响应 作包含以下标头,Azure 逻辑应用会自动从生成的响应消息中删除这些标头,而不会显示任何警告或错误。 Azure 逻辑应用不包含这些标头,即使响应动作包含这些标头,该服务也不会阻止你保存工作流。
Allow
-
Content-*
标头(使用Content-Disposition
和Content-Encoding
操作时的Content-Type
、POST
和PUT
除外),但GET
操作不包括这些标头 Cookie
Expires
Last-Modified
Set-Cookie
Transfer-Encoding
如果在包含分支的复杂工作流中有一个或多个“响应”操作,请确保工作流在运行时处理至少一个“响应”操作。 否则,如果跳过所有响应操作,调用方将收到“502 错误的网关”错误,即使工作流成功完成也是如此。
在标准逻辑应用无状态工作流中,“响应”操作必须最后显示在工作流中。 如果操作出现在任何其他位置,则 Azure 逻辑应用在所有其他操作运行完之前不会运行该操作。
在 Azure 门户中,打开你的消耗逻辑应用资源。
在边栏菜单上的 “开发工具”下,选择设计器以打开工作流。
此示例工作流使用在上一节添加的请求触发器。
在操作信息框中,添加响应消息所需的值。
Property name JSON 属性名称 Required Description Status Code statusCode
Yes 要在响应中返回的状态代码 Headers headers
No 一个 JSON 对象,描述要包含在响应中的一个或多个标头 Body body
No 响应正文 在任意文本字段中选择时,获取打开动态内容列表(闪电图标)或表达式编辑器(函数图标)的选项。 选择动态内容列表时,可以选择工作流中早期步骤提供的输出。 如果在 请求 触发器中指定了架构,架构属性也会显示在动态内容列表中,并且可用于工作流。
例如,在 “标头 ”字段中,使用 Content-Type 作为键名称,并将键值设置为 application/json ,如本文前面所述。 对于 “主体”框,可以打开动态内容列表,然后选择触发器主体输出。
若要查看 JSON 格式的标头,请选择“切换到文本视图”。
如果作存在任何其他参数,请打开 “高级参数 ”列表,然后选择所需的参数。
完成后,保存工作流。 在设计器工具栏上选择“保存”。
测试工作流
若要触发工作流,请使用 HTTP 请求工具及其说明,将 HTTP 请求发送到为请求触发器生成的 URL,包括请求触发器所需的方法。
有关触发器的基础 JSON 定义以及如何调用此触发器的详细信息,请参阅以下文章:请求触发器类型 和 在 Azure 逻辑应用中使用 HTTP 终结点调用、触发或嵌套工作流。
安全性和身份验证
在以请求触发器(而不是 Webhook 触发器)开头的标准逻辑应用工作流中,可以通过使用托管身份来使用 Azure Functions 功能对通过触发器创建的终结点入站调用进行身份验证。 此预配也称为 Easy Auth。有关详细信息,请参阅 使用 Easy Auth 的标准逻辑应用中触发工作流。
有关对逻辑应用工作流的入站调用(例如传输层安全性(TLS)、 Microsoft Entra ID Open Authentication(Microsoft Entra ID OAuth)、使用 Azure API 管理公开逻辑应用或限制发起入站调用的 IP 地址的详细信息,请参阅 Access for inbound calls to request-based triggers。