你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

从 Azure 逻辑应用 中的工作流连接或调用 REST API 终结点

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

若要从Azure 逻辑应用中的逻辑应用工作流调用 REST API 终结点,可以使用内置的 HTTP + Swagger 操作通过 Swagger 文件调用任何 REST API 终结点。 HTTP + Swagger 触发器和操作与 HTTP 触发器和操作的功能相同,但通过公开 Swagger 文件所述的 API 结构和输出,在工作流设计器中提供更好的体验。 若要实现轮询触发器,请遵循创建用于调用逻辑应用工作流中的其他 API、服务和系统的自定义 API 中所述的轮询模式。

限制

HTTP + Swagger 内置操作目前仅支持 OpenAPI 2.0,不支持 OpenAPI 3.0。

先决条件

  • 帐户和 Azure 订阅。 如果没有 Azure 订阅,请注册一个免费 Azure 帐户

  • Swagger 文件的 URL,用于描述要调用的目标 REST API 终结点

    通常,REST 终结点必须满足以下条件,触发器或操作才能生效:

    • Swagger 文件必须托管在可公开访问的 HTTPS URL 上。

    • Swagger 文件必须包含定义中的每个操作的 operationID 属性。 如果未包含,则连接器只显示 Swagger 文件中的最后一个操作。

    • 必须为 Swagger 文件启用跨域资源共享 (CORS)

    本指南中的示例使用需要 Azure AI 服务资源密钥和区域的 Azure AI 人脸

    注意

    若要引用未托管的或不满足安全性和跨域要求的 Swagger 文件,可将 Swagger 文件上传到 Azure 存储帐户中的 Blob 容器,并在该存储帐户上启用 CORS,以便可以引用该文件。

  • 要从中调用目标终结点的消耗或标准逻辑应用工作流。 若要从 HTTP + Swagger 触发器开始,请使用空白工作流创建逻辑应用资源。 若要使用 HTTP + Swagger 操作,请使用所需的任意触发器启动工作流。 此示例使用 HTTP + Swagger 触发器作为第一个操作。

添加 HTTP + Swagger 触发器

此内置触发器将 HTTP 请求发送到描述 REST API 的 Swagger 文件的 URL。 然后,此触发器返回一个包含该文件的内容的响应。

  1. Azure 门户中,打开标准逻辑应用资源和设计器中的空白工作流。

  2. 在设计器中,按照以下常规步骤添加名为 HTTP + SwaggerHTTP 触发器。

  3. Swagger 终结点 框中,输入所需的 Swagger 文件的 URL,然后选择“ 添加操作”。

    请确保使用或创建你自己的终结点。 仅作为示例,这些步骤使用以下 位于美国西部区域的 Azure AI 人脸 API Swagger URL,可能无法在特定触发器中使用:

    https://westus.dev.cognitive.microsoft.com/docs/services/563879b61984550e40cbbe8d/export?DocumentFormat=Swagger&ApiName=Face%20API%20-%20V1.0

    Screenshot shows Standard workflow designer with trigger named httpswaggeraction. The Swagger Endpoint property is set to a URL value.

  4. 当设计器显示了 Swagger 文件描述的操作时,请选择要使用的操作。

    以下示例将触发器重命名为 人脸 - 检测 ,以便触发器具有更具描述性的名称。

    Screenshot shows Standard workflow, Face - Detect trigger, and list with Swagger operations.

  5. 提供要包含在终结点调用中的触发器参数的值(根据所选的操作而异)。 设置重复周期,以确定触发器调用终结点的频率。

  6. 若要添加其他可用参数,请打开 “高级参数 ”列表,然后选择所需的参数。

    要详细了解可用于 HTTP + Swagger 的身份验证类型,请参阅向出站调用添加身份验证

  7. 继续使用触发器触发时要运行的操作生成工作流。

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

添加 HTTP + Swagger 操作

此内置操作将 HTTP 请求发送到描述 REST API 的 Swagger 文件的 URL。 然后,此操作返回一个包含该文件的内容的响应。

  1. Azure 门户的设计器中,打开标准逻辑应用资源和工作流。

  2. 在设计器中,按照以下常规步骤添加名为 HTTP + SwaggerHTTP 操作。

  3. Swagger 终结点 框中,输入所需的 Swagger 文件的 URL,然后选择“ 添加操作”。

    请确保使用或创建你自己的终结点。 仅作为示例,这些步骤使用以下 位于美国西部区域的 Azure AI 人脸 API Swagger URL,可能无法在特定触发器中使用:

    https://westus.dev.cognitive.microsoft.com/docs/services/563879b61984550e40cbbe8d/export?DocumentFormat=Swagger&ApiName=Face%20API%20-%20V1.0

    Screenshot shows Standard workflow designer with trigger named Face - Detect, and action named httpswaggeraction. The Swagger Endpoint property is set to a URL value.

  4. 当设计器显示了 Swagger 文件描述的操作时,请选择要使用的操作。

    以下示例将操作重命名为 人脸 - 标识 ,以便操作具有更具描述性的名称。

    Screenshot shows Standard workflow, Face - Identify action, and list with Swagger operations.

  5. 提供要包含在终结点调用中的操作参数的值(根据所选的操作而异)。

  6. 若要添加其他可用参数,请打开 “高级参数 ”列表,然后选择所需的参数。

    要详细了解可用于 HTTP + Swagger 的身份验证类型,请参阅向出站调用添加身份验证

  7. 继续使用要运行的任何其他操作生成工作流。

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

在 Azure 存储中托管 Swagger

你仍然可以引用非托管的或者不符合安全要求和跨域要求的 Swagger 文件。 请将 Swagger 文件上传到 Azure 存储帐户中的 Blob 容器,并在该存储帐户中启用 CORS。 若要在 Azure 存储中创建、设置和存储 Swagger 文件,请执行以下步骤:

  1. 创建 Azure 存储帐户

  2. 现在,为 Blob 启用 CORS。 在存储帐户的菜单中选择“CORS”。 在“Blob 服务”选项卡上指定值,然后选择“保存”。

    属性
    允许的源 *
    允许的方法 GETHEAD、、 PUT
    允许的标头 *
    公开的标头 *
    最大期限(以秒为单位) 200

    此示例使用 Azure 门户,不过,你也可以使用 Azure 存储资源管理器之类的工具,或使用此示例 PowerShell 脚本自动配置此设置。

  3. 创建 Blob 容器。 在容器的“概述”窗格中,选择“更改访问级别”。 在“公共访问级别”列表中,选择“Blob (仅限对 Blob 进行匿名读取访问)”,然后选择“确定”。

  4. 通过 Azure 门户Azure 存储资源管理器将 Swagger 文件上传到 Blob 容器

  5. 若要在 Blob 容器中引用该文件,请从 Azure 存储资源管理器获取采用以下格式(区分大小写)的 HTTPS URL:

    https://<storage-account-name>.blob.core.windows.net/<blob-container-name>/<complete-swagger-file-name>?<query-parameters>

连接器技术参考

本部分提供有关 HTTP + Swagger 触发器和操作的输出的详细信息。

Outputs

HTTP + Swagger 调用返回以下信息:

属性名称 类型​​ 说明
headers 对象 请求中的标头
body 对象 包含请求中正文内容的对象
状态代码 Integer 请求中的状态代码
状态代码 说明
200 确定
202 已接受
400 错误的请求
401 未授权
403 禁止
404 未找到
500 内部服务器错误。 发生未知错误。

后续步骤