API Gateway 中 REST API 的閘道回應 - Amazon API Gateway

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

API Gateway 中 REST API 的閘道回應

閘道回應以 API Gateway 定義的回應類型識別。回應包含 HTTP 狀態碼、一組由參數對應指定的額外標頭,以及非 VTL 對應範本所產生的承載。

在 API Gateway REST API 中,閘道回應會以 GatewayResponse. 在 OpenAPI 中,一個GatewayResponse實例由 x-amazon-apigateway-gateway-響應. 網關響應擴展來描述。

若要啟用閘道回應,您可以在 API 層級設定支援回應類型的閘道回應。每當 API Gateway 傳回該類型的回應時,就會套用閘道回應中定義的標頭映射與承載映射範本,將映射的結果傳回給 API 發起人。

在下一節中,我們將示範如何使用 API Gateway 主控台與 API Gateway REST API 來設定閘道回應。

設定閘道回應以自訂錯誤回應

如果 API Gateway 無法處理傳入請求,則它會傳送錯誤回應給用戶端,但不會將請求轉送到整合後端。錯誤回應預設包含一則簡短的描述性錯誤訊息。例如,如果您嘗試在未定義的 API 資源上呼叫操作,您會收到 { "message": "Missing Authentication Token" } 訊息的錯誤回應。如果您是初次使用 API Gateway,您可能會發現很難了解實際發生錯誤的原因。

針對一些錯誤回應,API Gateway 允許 API 開發人員進行自訂以傳回不同格式的回應。在 Missing Authentication Token 範例中,您可以將含有可能原因的提示新增至原始回應承載,如下列範例所示:{"message":"Missing Authentication Token", "hint":"The HTTP method or resources may not be supported."}

當您的 API 在外部交換與 AWS 雲端之間進行調解時,您可以使用 VTL 對應範本進行整合要求或整合回應,將承載從一種格式對應到另一種格式。不過,VTL 對應範本僅適用於具有成功回應的有效請求。

針對無效的請求,API Gateway 會完全略過整合並傳回錯誤回應。您必須使用自訂,將錯誤回應轉譯成 Exchange 相容的格式。在本例中,會在只支援簡單變數替換的非 VTL 對應範本中轉譯自訂。

將 API Gateway 所產生的錯誤回應一般化為 API Gateway 所產生的任何回應,此操作稱為閘道回應。這可區分 API Gateway 所產生的回應與整合回應。閘道回應對應範本可存取 $context 變數值與 $stageVariables 屬性值,以及 method.request.param-position.param-name 格式的方法請求參數。

如需 $context 變數的詳細資訊,請參閱「$context資料模型、授權者、對應範本和 CloudWatch 存取記錄的變數」。如需有關 $stageVariables 的詳細資訊,請參閱 $stageVariables。如需有關方法請求參數的詳細資訊,請參閱 $input 變數