OpenAPI 3.x 擴充功能

Endpoints 接受一組 Google 專屬的 OpenAPI 規格擴充功能,這些擴充功能可設定閘道的行為。您可以在 OpenAPI 文件中直接指定 API 管理設定、驗證方法、配額限制和後端整合。瞭解這些擴充功能有助於調整服務行為,並整合 Endpoints 功能。

這個頁面將說明 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 文件中定義的作業建立關聯。
allowCors bool False 將所有 CORS (OPTIONS) 要求傳送至後端。

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 空白 根據預設,Endpoints 會建立執行個體 ID 符記,並使用與位址欄位相符的 JWT 目標對象。只有在目標後端使用以 JWT 為基礎的驗證機制,且預期目標對象與地址欄位中指定的值不同時,才需要手動指定 jwt_audience。如果是部署在 App Engine 或使用 IAP 的遠端後端,您必須覆寫 JWT 目標對象。App Engine 和 IAP 會使用其 OAuth 用戶端 ID 做為預期目標對象。
disableAuth bool False 防止資料平面 Proxy 取得執行個體 ID 權杖,並將其附加至要求。
pathTranslation string APPEND_PATH_TO_ADDRESSCONSTANT_ADDRESS 在將要求 Proxy 至目標後端時,設定路徑轉譯策略。如果頂層設定 x-google-backend,預設 pathTranslationAPPEND_PATH_TO_ADDRESS。如果作業設為 x-google-backend,預設值為 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 Token 簽章。
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 中定義的後端。您必須為 Endpoints 設定這個擴充功能。您可以在 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 的欄位:

欄位 類型 必填 預設 說明
target string 指定主機解析的 IP 位址。
allowCors bool false 允許 CORS 要求。

瞭解 OpenAPI 擴充功能限制

這些 OpenAPI 擴充功能有特定限制。詳情請參閱「OpenAPI 3.x 功能限制」。

後續步驟

  • 瞭解 OpenAPI 規範
  • 如需特定 Endpoints 或 ESPv2 設定,請參閱 Endpoints 說明文件。