API Gateway 中的 OpenAPI 3.x 扩展程序

API Gateway 接受一组特定于 Google 的 OpenAPI 规范扩展程序,用于配置网关的行为。借助这些扩展程序,您可以直接在 OpenAPI 文档中指定 API 管理设置、身份验证方法、配额限制和后端集成。了解这些扩展有助于您定制服务行为并与 API Gateway 功能集成。

本页面介绍了特定于 Google 的 OpenAPI 规范 3.x 扩展程序。

尽管提供的示例采用了 YAML 格式,但也支持 JSON。

x-google-api-management

必填。

x-google-api-management 扩展程序用于定义服务的顶级 API 管理设置。将此扩展程序放置在 OpenAPI 文档的根目录中。

下表介绍了 x-google-api-management 的字段:

字段 类型 必需 默认 说明
metrics map[string]Metric 定义用于强制执行配额限制的指标。
quota map[string]Quota 为您的服务指定配额限制。
backends map[string]Backend 配置后端服务。
apiName string 将名称与 OpenAPI 文档中定义的操作相关联。

Metric 对象

Metric 对象定义了用于强制执行配额的指标。

下表介绍了 Metric 的字段:

字段 类型 必需 默认 说明
displayName string 相应指标的显示名称。

Quota 对象

Quota 对象用于定义配额限制。

下表介绍了 Quota 的字段:

字段 类型 必需 默认 说明
limits map[string]QuotaLimit 指定配额限制。

Quota Limit 对象

QuotaLimit 对象定义了具体的配额限制。

下表介绍了 QuotaLimit 的字段:

字段 类型 必需 说明
metric string 引用此 OpenAPI 文档中声明的指标。
values int64 设置在拒绝客户端请求之前,指标可达到的最大值。

Backend 对象

Backend 对象用于配置后端服务。您必须设置 jwtAudiencedisableAuth

下表介绍了 Backend 的字段:

字段 类型 必需 默认 说明
address string 指定后端的网址。
jwtAudience string 默认情况下,API Gateway 会创建一个实例 ID 令牌,其 JWT 目标对象与地址字段匹配。仅当目标后端使用基于 JWT 的身份验证且预期目标对象与地址字段中指定的值不同时,才需要手动指定 jwt_audience。对于部署在 App Engine 上或使用 IAP 的远程后端,您必须替换 JWT 目标对象。App Engine 和 IAP 使用其 OAuth 客户端 ID 作为预期目标对象。
disableAuth bool False 防止数据平面代理获取实例 ID 令牌并将其附加到请求中。
pathTranslation string APPEND_PATH_TO_ADDRESSCONSTANT_ADDRESS 设置在将请求代理到目标后端时使用的路径转换策略。如果在顶层设置了 x-google-backend,但未指定 path_translation,则默认的 pathTranslationAPPEND_PATH_TO_ADDRESS。如果在操作级层设置了 x-google-backend,但未指定 path_translation,则默认值为 CONSTANT_ADDRESS
deadline double 15.0 指定等待请求完整响应的秒数。如果响应超过此截止期限,则会超时。
protocol string http/1.1 设置用于向后端发送请求的协议。支持的值包括 http/1.1h2

x-google-auth

可选。

x-google-auth 扩展程序在安全方案对象中定义身份验证设置。

下表介绍了 x-google-auth 的字段:

字段 类型 必需 默认 说明
issuer string 指定凭据的颁发者。值可以是主机名或电子邮件地址。
jwksUri string

提供提供商公钥集的 URI,用于验证 JSON Web 令牌的签名。API Gateway 支持此 OpenAPI 扩展程序定义的两种非对称公钥格式:

  1. JWK 集格式。例如 jwksUri: "https://YOUR_ACCOUNT_NAME.YOUR_AUTH_PROVIDER_URL/.well-known/jwks.json"
  2. X509。例如 jwksUri: "https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com"

如果您使用的是对称密钥格式,请将 jwksUri 设置为包含 base64url 编码密钥字符串的文件的 URI。

audiences [string] 列出在 JWT 身份验证期间 JWT aud 字段必须匹配的受众群体。
jwtLocations [JwtLocations] 自定义 JWT 令牌的位置。默认情况下,JWT 会在 Authorization 标头(以“Bearer”为前缀)、X-Goog-Iap-Jwt-Assertion 标头或 access_token 查询参数中传递。

JwtLocations 对象

JwtLocations 对象用于提供 JWT 令牌的自定义位置。

下表介绍了 JwtLocations 的字段:

字段 类型 必需 默认 说明
header | query string 不适用 指定包含 JWT 的标头的名称,或包含 JWT 的查询参数的名称。
valuePrefix string 仅适用于标头。设置后,其值必须与包含 JWT 的标头值的前缀匹配。

x-google-quota

可选。

x-google-quota 扩展程序定义了配额限制。您可以在 OpenAPI 文档的顶层或针对单个操作定义此扩展程序。

下表介绍了 x-google-quota 的字段:

字段 类型 必需 说明
self map[string]int64 quota 对象 (self) 引用对象内定义的任何指标。在这种情况下,请将某个指标(例如 read-requests)映射到用于递增该指标的金额。当指标值达到配额限制时,系统会拒绝请求。

x-google-backend

必填。

x-google-backend 扩展程序引用了 x-google-api-management 中定义的后端。您必须为 API Gateway 设置此扩展程序。您可以在 OpenAPI 文档的顶层或针对单个操作定义此扩展程序。

下表介绍了 x-google-backend 的字段:

字段 类型 必需 说明
self string 引用 x-google-api-management 中定义的后端的 ID。

x-google-endpoint

可选。

x-google-endpoint 扩展程序用于配置 OpenAPI 3.x 文档的 servers 数组中定义的服务器的属性。OpenAPI 文档中只能有一个服务器条目使用 x-google-endpoint 扩展程序。

该扩展程序还定义了其他后端功能,包括:

  • CORS:您可以通过将 allowCors 属性设置为 true 来启用跨源资源共享 (CORS)。

  • 基本路径:服务器上使用 x-google-endpoint 设置的基本路径用于您的 API。例如,以下配置将 v1 设置为基本路径:

servers:
  - url: https://API_NAME.apigateway.PROJECT_ID.cloud.goog/v1
    x-google-endpoint: {}

下表介绍了 x-google-endpoint 的字段:

字段 类型 必需 默认 说明
allowCors bool false 允许 CORS 请求。

x-google-parameter

可选。

x-google-parameter 扩展程序是在 parameter 项上定义的。当路径使用路径模板时,可以使用此属性来指定应使用双通配符匹配行为。

下表介绍了 x-google-parameter 的字段:

字段 类型 必需 说明
pattern string 必须将其设置为 **

了解 OpenAPI 扩展程序限制

这些 OpenAPI 扩展程序有特定限制。如需了解详情,请参阅 OpenAPI 3.x 功能限制

后续步骤