API Gateway 中 REST API 的閘道回應
閘道回應以 API Gateway 定義的回應類型識別。回應包含 HTTP 狀態碼、一組由參數對應指定的額外標頭,以及非 VTL 對應範本所產生的承載。
在 API Gateway REST API 中,閘道回應以 GatewayResponse 表示。在 OpenAPI 中,GatewayResponse
執行個體是以 x-amazon-apigateway-gateway-responses.gatewayResponse 延伸來加以說明。
若要啟用閘道回應,您可以在 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 在外部 Exchange 與 AWS 雲端之間調解時,您可以對整合請求或整合回應使用 VTL 對應範本,將酬載從某個格式對應到另一個格式。不過,VTL 對應範本僅適用於具有成功回應的有效請求。
針對無效的請求,API Gateway 會完全略過整合並傳回錯誤回應。您必須使用自訂,將錯誤回應轉譯成 Exchange 相容的格式。在本例中,會在只支援簡單變數替換的非 VTL 對應範本中轉譯自訂。
將 API Gateway 所產生的錯誤回應一般化為 API Gateway 所產生的任何回應,此操作稱為閘道回應。這可區分 API Gateway 所產生的回應與整合回應。閘道回應對應範本可存取 $context
變數值與 $stageVariables
屬性值,以及 method.request.
格式的方法請求參數。param-position
.param-name
如需 $context
變數的詳細資訊,請參閱「適用於資料模型、授權方、映射範本及 CloudWatch 存取記錄的 $context 變數」。如需有關 $stageVariables
的詳細資訊,請參閱 $stageVariables。如需有關方法請求參數的詳細資訊,請參閱 $input 變數。