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.8 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 导入规则
导入 OpenAPI 定义时应用以下规则:
- 定义验证为 OpenAPI 2.0 或 OpenAPI 3.0。
- 3scale 服务中的所有映射规则都会被删除。
-
要替换,所有方法名称都必须与 OpenAPI 定义
操作中定义的方法相同。operationId
使用精确的模式匹配。 - 仅修改 OpenAPI 定义中包含的方法。
-
仅存在于 OpenAPI 定义中的所有方法都附加到
Hits
指标。 - 导入 OpenAPI 定义中的所有映射规则。您可以在 API > Integration 中查看它们。
-
支持的安全方案是
apiKey
和oauth2
,其中包含任何 OAuth 流类型。 OpenAPI 规格必须是以下之一:
- 可用路径中的文件名.
-
toolbox 可以从中下载内容的 URL。支持的方案是
http
和https
。 -
从
stdin
标准输入流读取.这通过设置-
值来控制。
虽然规范中没有安全要求,但该服务被视为 OpenAPI。toolbox 将添加一个 default_credentials
策略,如果还没有在策略链中,它也称为 anonymous_policy
。default_credentials
策略将配置在可选参数 --default-credentials-userkey 中提供的 user key
。
OpenAPI 3.0 限制
导入 OpenAPI 3.0 定义时会应用以下限制:
-
只有
servers
列表中的第一个server.url
元素解析为专用 URL。server.url
元素的路径
组件将用作 OpenAPI 的basePath
属性。 - toolbox 不会解析操作对象中路径项和服务器中的服务器。
- 不支持安全方案对象中的多个流。