设置 OpenAPI basePath 属性
在 OpenAPI 2.0basePath 属性来提供 paths 属性中定义的每个路径之前的一个或多个路径部分。由于 API Gateway 具有多种表达资源路径的方式,因此导入 API 功能可提供以下选项用于解释导入过程中的 basePath 属性:ignore、prepend 和 split。
在 OpenAPI 3.0basePath 不再是顶级属性。相反,作为惯例,API Gateway 使用服务器变量
-
如果 API 不包含任何
basePath变量,则导入 API 功能将检查server.url字符串以查看其是否包含"/"之外的路径。如果包含,则将该路径用作基本路径。 -
如果 API 仅包含一个
basePath变量,则导入 API 功能将使用其作为基本路径,即使该变量未在server.url中进行引用。 -
如果 API 包含多个
basePath变量,则导入 API 功能将仅使用第一个变量作为基本路径。
忽略
如果 OpenAPI 文件的 basePath 值为 /a/b/c 且 paths 属性包含 /e 和 /f,则以下 POST 或 PUT 请求:
POST /restapis?mode=import&basepath=ignore
PUT /restapis/api_id?basepath=ignore
将在 API 中生成以下资源:
-
/ -
/e -
/f
效果是将 basePath 视为不存在,所有声明的 API 资源均相对于主机提供。例如,如果您有一个自定义域名,其 API 映射不包含基础路径和表示生产阶段的阶段值,则可以使用这一选项。
注意
API Gateway 自动为您创建一个根资源,即使该资源未在定义文件中明确声明。
如未指定,basePath 以 ignore 为默认值。
前置
如果 OpenAPI 文件的 basePath 值为 /a/b/c 且 paths 属性包含 /e 和 /f,则以下 POST 或 PUT 请求:
POST /restapis?mode=import&basepath=prepend
PUT /restapis/api_id?basepath=prepend
将在 API 中生成以下资源:
-
/ -
/a -
/a/b -
/a/b/c -
/a/b/c/e -
/a/b/c/f
效果是将 basePath 视为指定其他资源 (不含方法) 并将这些资源添加到声明的资源组中。例如,如果不同的团队负责一个 API 的不同部分且 basePath 可以为每个团队所负责 API 部分引用路径位置,则可以使用这一选项。
注意
API Gateway 自动为您创建中间资源,即使这些资源未在定义中明确声明。
Split
如果 OpenAPI 文件的 basePath 值为 /a/b/c 且 paths 属性包含 /e 和 /f,则以下 POST 或 PUT 请求:
POST /restapis?mode=import&basepath=split
PUT /restapis/api_id?basepath=split
将在 API 中生成以下资源:
-
/ -
/b -
/b/c -
/b/c/e -
/b/c/f
效果是将最顶层的路径部分 /a 视为每个资源路径的开始,并在 API 自身内创建其他资源 (不含方法)。例如,如果 a 是一个您想在 API 中使用的阶段名称,则可以使用这一选项。