使用 OpenAPI 扩展

已完成

本单元探讨如何在自定义连接器中使用 Microsoft OpenAPI 扩展 x-ms-capabilitiesx-ms-url-encoding

x-ms-capabilities 扩展可帮助您在连接器级别和操作级别配置连接器功能。 目前,Microsoft Power Platform 自定义连接器的以下选项可供配置:

  • chunkTransfer - 操作级别

  • testConnection - 连接器级别

启用块传输

处理消息时,连接器运行时会将消息内容限制为最大大小。 本限制有助于降低因存储和处理大型消息而产生的开销。 要帮助处理大于本限制的消息,连接器可以将大型消息分成若干较小的消息块。 这样便可实现大型内容传输。 通过连接器与其他服务通信时,运行时可以使用大型消息,但仅能以消息块形式使用。 本条件意味着连接器还必须支持分块,且连接器和这些服务之间的基础 HTTP 消息交换必须使用分块。

要使自定义连接器使用块传输,需要以下参数:

  • API 必须支持分块。 有关详细信息,请参阅连接器块消息处理

  • 自定义连接器必须在操作上启用块传输功能扩展。

  • 使用连接器操作的制作者必须为流步骤启用块传输。

在自定义连接器定义中,可以向要为其启用块传输的操作定义中添加以下逻辑。

{chunkTransfer: true}

显示已配置的块传输的屏幕截图。

如果使用的是已下载的 apiDefinition.swagger.json 文件,而不是 YAML 编辑器,则可以进行以下屏幕截图中所示的更改。

显示已配置块传输的 JSON OpenAPI 定义的屏幕截图。

进行本更改后,自定义连接器设计器中不会显示更改指示。 但是,在流中使用本操作时,步骤设置中将显示以下允许分块选项。

显示在 Power Automate 中启用分块的屏幕截图。

假设 API 支持它,启用分块后,您现在可以借助分块来处理并传输大型消息。

配置测试连接

默认情况下,使用自定义连接器创建连接时,不会验证连接是否有效。 例如,如果提供了无效的主机 URL 或无效的 API 密钥,虽然可以创建连接,但使用连接时最终会失败。 通过使用 testConnection OpenAPI 扩展,可以在自定义连接器上指定一个操作,该操作将在连接创建期间运行以验证所提供的配置。

要实现连接测试,必须在自定义连接器上定义一个简单操作,该操作返回 HTTP 200(成功)。 本操作可以是已配置的现有操作,也可以是专门创建的用于测试连接的操作。 如果配置特定的测试操作,建议将其标记为内部,以便用户不会尝试使用它。 也可以将静态参数传递到本操作。 例如,如果操作使用了 $top 参数来限制返回的记录数,则可以使用参数将结果限制为一条记录。

以下示例显示定义的 ListInvoices 操作及其用于测试连接的方式,并显示如何配置 TestConnection 扩展。

显示在 YAML x-ms-capabilities 中配置的测试连接的屏幕截图。

编辑 apiDefinition.swagger.json 类似于下图。

显示在 JSON 中配置的测试连接的屏幕截图。

配置路径编码

x-ms-url-encoding 扩展适用于请求 URL 路径中包含的参数。

例如,可以通过以下请求定义按国家/地区返回客户的操作:

https://myapi.myservice.com/customers/{country}

在此操作中,country 将成为连接器用户提供的参数。 由于这些参数是路径的一部分,因此需要对它们进行 URL 编码。 默认情况下,路径参数进行单层 URL 编码。 但是,在某些情况下,基础 API 可能要求参数进行双重 URL 编码,以解决某些字符可能引起的不明确性,例如 at 符号 (@)、斜杠 (/)、反斜杠 (\) 等。

要对路径参数配置双重编码,可向参数添加以下选项:

x-ms-url-encoding: double

考虑使用两种方法返回输入路径参数的 API,其中一种方法使用双重编码,如下图中所示。

显示配置双重编码的 x-ms-url-encoding 的屏幕截图。

运行使用复杂输入调用两个操作的 Microsoft Power Automate 流时,双重编码会将同一文本值传递到 API,只是该值现已经过双重编码。

显示 Power Automate 中单层编码和双重编码的屏幕截图。

在 API 要求双重 URL 编码的场景中,本扩展简化了参数处理过程,因为连接器用户在调用操作时无需对路径参数进行编码。