Menu Close

3.6. 导入 OpenAPI 定义

要创建新服务或更新现有服务,您可以从本地文件或 URL 导入 OpenAPI 定义。导入的默认服务名称由 OpenAPI 定义中的 info.title 指定。但是,您可以使用 --target_system_name=<NEW NAME> 覆盖 此服务名称。这将更新服务名称(如果已存在),或者创建新的服务名称(如果不存在)。

导入 openapi 命令的格式如下:

3scale import openapi [opts] -d=<destination> <specification>

OpenAPI <specification> 可以是以下之一:

  • /path/to/your/definition/file.[json|yaml|yml]
  • http[s]://domain/resource/path.[json|yaml|yml]

示例

$ podman run registry.redhat.io/3scale-amp2/toolbox-rhel7:3scale2.11 3scale import openapi [opts] -d=https://{DEST_KEY}@{3SCALE_ADMIN}-admin.{DOMAIN_NAME}  my-test-api.json

命令选项

导入 openapi 命令选项包括:

-d --destination=<value>
3scale 目标实例格式: http[s]://<authentication>@3scale_domain
-t --target_system_name=<value>
3scale 目标系统名称.
--backend-api-secret-token=<value>
API 网关向后端 API 发送的自定义机密令牌。
--backend-api-host-header=<value>
API 网关向后端 API 发送的自定义主机标头。

如需了解更多选项,请参阅 3scale import openapi --help 命令。

OpenAPI 导入规则

支持的安全方案是 apiKeyoauth2,其中包含任何 OAuth 流类型。

OpenAPI 规格必须是以下之一: 可用路径中的文件名. toolbox 可以从中下载内容的 URL。支持的方案是 httphttps。**stdin 标准输入流中读取。这通过设置 - 值来控制。

导入 OpenAPI 定义时应用以下附加规则:

  • 定义验证为 OpenAPI 2.0 或 OpenAPI 3.0。
  • 导入 OpenAPI 定义中的所有映射规则。您可以在 API > Integration 中查看它们。
  • 3scale 产品中的所有映射规则都被替换。
  • 仅修改 OpenAPI 定义中包含的方法。
  • 仅存在于 OpenAPI 定义中的所有方法都附加到 Hits 指标。
  • 要替换方法,方法名称必须与 OpenAPI 定义 操作中定义的方法相同。operationId 使用精确的模式匹配。
注意

虽然规范中没有安全要求,但该服务被视为 OpenAPI。toolbox 将添加一个 default_credentials 策略,如果还没有在策略链中,它也称为 anonymous_policydefault_credentials 策略将配置在可选参数 --default-credentials-userkey 中提供的 user key

OpenAPI 3.0 限制

导入 OpenAPI 3.0 定义时会应用以下限制:

  • 只有 servers 列表中的第一个 server.url 元素解析为专用 URL。server.url 元素 的路径 组件将用作 OpenAPI 的 basePath 属性。
  • toolbox 不会解析操作对象中路径项和服务器中的服务器。
  • 不支持安全方案对象中的多个流。