

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

# API Gateway 中 REST API 的閘道回應
<a name="api-gateway-gatewayResponse-definition"></a>

 閘道回應以 API Gateway 定義的回應類型識別。回應包含 HTTP 狀態碼、一組由參數對應指定的額外標頭，以及非 [VTL](https://velocity.apache.org/engine/devel/vtl-reference.html) 對應範本所產生的承載。

 在 API Gateway REST API 中，閘道回應以 [GatewayResponse](https://docs.aws.amazon.com/apigateway/latest/api/API_GatewayResponse.html) 表示。在 OpenAPI 中，`GatewayResponse` 執行個體是以 [x-amazon-apigateway-gateway-responses.gatewayResponse](api-gateway-swagger-extensions-gateway-responses.gatewayResponse.md) 延伸來加以說明。

若要啟用閘道回應，您可以在 API 層級設定[支援回應類型](supported-gateway-response-types.md)的閘道回應。每當 API Gateway 傳回該類型的回應時，就會套用閘道回應中定義的標頭映射與承載映射範本，將映射的結果傳回給 API 發起人。

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

## 設定閘道回應以自訂錯誤回應
<a name="customize-gateway-responses"></a>

如果 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` 變數的詳細資訊，請參閱「[資料轉換的內容變數](api-gateway-mapping-template-reference.md#context-variable-reference)」。如需有關 `$stageVariables` 的詳細資訊，請參閱 [階段變數](api-gateway-mapping-template-reference.md#stagevariables-template-reference)。如需有關方法請求參數的詳細資訊，請參閱 [輸入變數](api-gateway-mapping-template-reference.md#input-variable-reference)。

**Topics**
+ [設定閘道回應以自訂錯誤回應](#customize-gateway-responses)
+ [使用 API Gateway 主控台設定 REST API 的閘道回應](set-up-gateway-response-using-the-console.md)
+ [使用 API Gateway REST API 設定閘道回應](set-up-gateway-response-using-the-api.md)
+ [設定 OpenAPI 中的閘道回應自訂](set-up-gateway-responses-in-swagger.md)
+ [API Gateway 的閘道回應類型](supported-gateway-response-types.md)