设置 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 中使用的阶段名称,则可以使用这一选项。