使用 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 编辑器,则可以进行以下屏幕截图中所示的更改。

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

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

配置测试连接

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

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

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

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

配置路径编码

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

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

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

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

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

x-ms-url-encoding: double

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

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

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