设置 OpenAPI basePath 属性 - Amazon API Gateway

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设置 OpenAPI basePath 属性

OpenAPI 2.0 中,您可以使用 basePath 属性来提供 paths 属性中定义的每个路径之前的一个或多个路径部分。由于 API Gateway 具有多种表达资源路径的方式,因此导入 API 功能可提供以下选项用于解释导入过程中的 basePath 属性:ignore、prepend 和 split。

OpenAPI 3.0 中,basePath 不再是顶级属性。相反,作为惯例,API Gateway 使用服务器变量。导入 API 功能提供了相同选项用于解释导入过程中的基本路径。按如下所示标识基本路径:

  • 如果 API 不包含任何 basePath 变量,则导入 API 功能将检查 server.url 字符串以查看其是否包含 "/" 之外的路径。如果包含,则将该路径用作基本路径。

  • 如果 API 仅包含一个 basePath 变量,则导入 API 功能将使用其作为基本路径,即使该变量未在 server.url 中进行引用。

  • 如果 API 包含多个 basePath 变量,则导入 API 功能将仅使用第一个变量作为基本路径。

Ignore

如果 OpenAPI 文件的 basePath 值为 /a/b/cpaths 属性包含 /e/f,则以下 POSTPUT 请求:

POST /restapis?mode=import&basepath=ignore

PUT /restapis/api_id?basepath=ignore

将在 API 中生成以下资源:

  • /

  • /e

  • /f

效果是将 basePath 视为不存在,所有声明的 API 资源均相对于主机提供。例如,如果您有一个自定义域名,其 API 映射不包含基础路径和表示生产阶段的阶段值,则可以使用这一选项。

注意

API Gateway 自动为您创建一个根资源,即使该资源未在定义文件中明确声明。

如未指定,basePathignore 为默认值。

前置

如果 OpenAPI 文件的 basePath 值为 /a/b/cpaths 属性包含 /e/f,则以下 POSTPUT 请求:

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/cpaths 属性包含 /e/f,则以下 POSTPUT 请求:

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