在 Azure 逻辑应用中接收和响应对工作流的入站 HTTPS 调用

适用范围:Azure 逻辑应用(消耗型 + 标准型)

本操作指南演示如何创建一个逻辑应用工作流,该工作流可以使用请求内置触发器接收和处理来自其他服务的入站 HTTPS 请求或调用。 当工作流使用此触发器时,可以使用响应内置操作响应 HTTPS 请求。

注意

仅当使用请求触发器时,“响应”操作才有效。

例如,此列表描述了使用“请求”触发器和“响应”操作时工作流可以执行的一些任务:

  • 接收并响应对本地数据库中数据的 HTTPS 请求。

  • 接收并响应从另一个逻辑应用工作流发送的 HTTPS 请求。

  • 发生外部 Webhook 事件时触发工作流运行。

若要改为通过发送传出或出站请求来运行工作流,请使用 HTTP 内置触发器或 HTTP 内置操作

先决条件

  • Azure 帐户和订阅。 如果没有订阅,可以注册试用版 Azure 订阅

  • 要接收入站 HTTPS 请求的逻辑应用工作流。 若要使用“请求”触发器启动工作流,必须从空白工作流开始。 若要使用“响应”操作,工作流必须从“请求”触发器开始。

添加“请求”触发器

“请求”触发器创建可手动调用的终结点,该终结点仅处理 HTTPS 上的入站请求。 当调用方将请求发送到此终结点时,“请求”触发器会触发并运行工作流。 有关如何调用此触发器的信息,请参阅在 Azure 逻辑应用中使用 HTTPS 终结点调用、触发或嵌套工作流

  1. Azure 门户中,打开设计器中的消耗型逻辑应用和空白工作流。

  2. 在设计器中,按照这些常规步骤查找并添加名为“收到 HTTP 请求时”的“请求”内置触发器。

  3. 出现触发器信息框后,根据需要提供以下信息:

    属性名称 JSON 属性名称 必须 说明
    HTTP POST URL {无} 保存工作流后生成的终结点 URL,用于发送触发工作流的请求。
    请求正文 JSON 架构 schema 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 标头:

    {
       "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 错误请求”错误。

  5. 若要将其他属性或参数添加到触发器,请打开“添加新参数”列表,然后选择要添加的参数。

    属性名称 JSON 属性名称 必须 说明
    方法 method 传入的请求在调用逻辑应用时必须使用的方法
    相对路径 relativePath 逻辑应用终结点 URL 可接受的参数的相对路径

    以下示例将添加“Method”属性:

    显示“消耗”工作流、“请求”触发器和添加“Method”参数的屏幕截图。

    Method 属性显示在触发器中,使你可以从列表中选择方法。

    显示“消耗”工作流、“请求”触发器和已打开“Method”列表并选中一个方法的屏幕截图。

  6. 准备就绪后,保存工作流。 在设计器工具栏上选择“保存”。

    此步骤将生成 URL,其可用于发送触发工作流的请求。

  7. 若要复制生成的 URL,请选择 URL 旁边的复制图标。

    显示“消耗”工作流、“请求”触发器和选中 URL 复制按钮的屏幕截图。

    注意

    若要在调用请求触发器时在 URI 中包含哈希符号或井号 (#),请改用此编码版本:%25%23

现在,在下一步中添加其他操作,以继续生成工作流。 例如,可以通过添加响应操作来响应请求,该响应操作可用于返回自定义响应,本文后面部分将介绍此相关内容。

备注

工作流仅在有限的时间内使入站请求保持打开状态。 假设工作流还包含“响应”操作,如果工作流在此有限时间到期后没有向调用方返回响应,则工作流会向调用方返回“504 网关超时”状态。 如果工作流不包含“响应”操作,则工作流会立即向调用方返回“202 已接受”状态。

有关工作流入站调用(例如传输层安全性 (TLS)(以前称为安全套接字层 (SSL))、使用 Microsoft Entra ID 的 OAuth共享访问签名 (SAS))的安全性、身份验证和加密的信息,以及如何使用 Azure API Management 来公开逻辑应用资源,或限制发起入站调用的 IP 地址,请参阅保护访问和数据 - 对基于请求的触发器的入站调用的访问

触发器输出

下表列出了“请求”触发器的输出:

JSON 属性名称 数据类型 说明
headers 对象 描述请求中的标头的 JSON 对象
body 对象 描述请求中的正文内容的 JSON 对象

添加响应操作

使用“请求”触发器接收入站请求时,可以使用“响应”内置操作(仅适用于“请求”触发器)对响应进行建模并将有效负载结果发送回调用方。 这种与请求触发器和响应操作的结合会创建请求-响应模式。 除了 Foreach 循环和循环内以及并行分支以外,可以在工作流中的任意位置添加响应操作。

重要

  • 如果“响应”操作包括以下标头,则 Azure 逻辑应用会从生成的响应消息中自动删除这些标头,而不会显示任何警告或错误。 Azure 逻辑应用不会包含这些标头,尽管服务不会阻止你保存具有带这些标头的“响应”操作的工作流。

    • Allow
    • Content-* 标头(使用 POST 和 PUT 操作时的 Content-DispositionContent-EncodingContent-Type 除外),但 GET 操作不包括这些标头
    • Cookie
    • Expires
    • Last-Modified
    • Set-Cookie
    • Transfer-Encoding
  • 如果在包含分支的复杂工作流中有一个或多个“响应”操作,请确保工作流在运行时处理至少一个“响应”操作。 否则,如果跳过所有响应操作,调用方将收到“502 错误的网关”错误,即使工作流成功完成也是如此。

  • 在标准逻辑应用无状态工作流中,“响应”操作必须最后显示在工作流中。 如果操作出现在任何其他位置,则 Azure 逻辑应用在所有其他操作运行完之前不会运行该操作。

  1. 在工作流设计器上,按照这些常规步骤查找并添加名为“响应”的响应内置操作。

    为简单起见,以下示例演示了折叠的“请求”触发器。

  2. 在操作信息框中,添加响应消息所需的值。

    属性名称 JSON 属性名称 必须 说明
    状态代码 statusCode 要在响应中返回的状态代码
    标头 headers 一个 JSON 对象,描述要包含在响应中的一个或多个标头
    正文 body 响应正文

    在任何文本字段中选择时,动态内容列表会自动打开。 然后,可以从工作流中的前面步骤选择表示任何可用输出的标记。 你指定的架构中的属性也会在此动态内容列表中显示。 你可以选择要在工作流中使用的这些属性。

    例如,在“标头”字段中,包括 Content-Type 作为键名,并将键值设置为 application/json,如本文前面所述。 对于“正文”框,可以从动态内容列表中选择触发器正文输出。

    显示 Azure 门户、“消耗”工作流和“响应”操作信息的屏幕截图。

    若要查看 JSON 格式的标头,请选择“切换到文本视图”。

    显示 Azure 门户、“消耗”工作流和“切换到文本”视图中的“响应”操作标头的屏幕截图。

  3. 要为操作添加更多属性(例如响应正文的 JSON 架构),请从“添加新参数”列表,选择要添加的参数。

  4. 完成后,保存工作流。 在设计器工具栏上选择“保存”。

测试工作流

若要触发工作流,请使用 HTTP 请求工具及其说明将 HTTP 请求发送到为“请求”触发器生成的 URL,包括“请求”触发器所需的方法。

若要详细了解触发器的基础 JSON 定义以及如何调用此触发器,请参阅以下主题:“请求”触发器类型通过 Azure 逻辑应用中的 HTTP 终结点调用、触发或嵌套工作流

安全性和身份验证

在以请求触发器(但不是 Webhook 触发器)开始的标准逻辑应用工作流中,可使用 Azure Functions 预配,通过托管标识对发送到由该触发器创建的终结点的入站调用进行身份验证。 此预配也称为“简易身份验证”。 有关详细信息,请查看使用 Easy Auth 在标准逻辑应用中触发工作流

有关逻辑应用工作流入站调用(例如传输层安全性 (TLS) [以前称为安全套接字层 (SSL)] 和 Microsoft Entra ID 开放式身份验证 (Microsoft Entra ID OAuth))的安全性、授权和加密的详细信息,以及如何使用 Azure API 管理来公开逻辑应用,或限制发起入站调用的 IP 地址,请参阅保护访问和数据 - 对基于请求的触发器的入站调用的访问

后续步骤