

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

# 在 API Gateway 中設定 WebSocket API 整合回應
<a name="apigateway-websocket-api-integration-responses"></a>

下一節提供有關 WebSocket API 整合回應的簡短概觀，以及如何設定 WebSocket API 整合回應。

**Topics**
+ [整合回應概觀](#apigateway-websocket-api-integration-response-overview)
+ [雙向通訊的整合回應](#apigateway-websocket-api-integration-response-for-two-way-communication)
+ [使用 API Gateway 主控台設定整合回應](#apigateway-websocket-api-integration-response-using-console)
+ [使用 設定整合回應 AWS CLI](#apigateway-websocket-api-integration-response-using-awscli)

## 整合回應概觀
<a name="apigateway-websocket-api-integration-response-overview"></a>

API Gateway 的整合回應是從後端服務建模並操控回應的方式。REST API 與 WebSocket API 整合回應的設定方式有些許差異，但概念上的行為相同。

WebSocket 路由可設定為雙向或單向通訊。
+ 路由設定為雙向通訊時，整合回應可讓您設定回傳訊息承載的轉換，類似 REST API 的整合回應。
+ 若路由設定為單向通訊，則不論整合回應的設定為何，WebSocket 管道在訊息處理後都不會回傳回應。

 API Gateway 不會將後端回應傳遞至路由回應，除非您有設定路由回應。若要了解設定路由回應，請參閱 [在 API Gateway 中設定 WebSocket API 的路由回應](apigateway-websocket-api-route-response.md)。

## 雙向通訊的整合回應
<a name="apigateway-websocket-api-integration-response-for-two-way-communication"></a>

整合可分為*代理*整合和*非代理*整合。

**重要**  
以*代理整合*而言，API Gateway 會自動將後端輸出以完整的承載傳遞至發起人。此時沒有整合回應。

以*非代理整合*而言，您必須設定至少一個整合回應：
+ 在沒有明確選擇時，其中一個整合回應最好設定為全部截獲。將整合回應金鑰設定為 `$default` 就是此預設案例的代表。
+ 在其他情況下，整合回應金鑰會以常規表達式運作，應遵循 `"/expression/"` 的格式。

以非代理 HTTP 整合而言：
+ API Gateway 將嘗試比對後端回應的 HTTP 狀態碼。整合回應金鑰此時會以常規表達式運作，若找不到配對項目，將選擇 `$default` 做為整合回應。
+ 範本選擇表達式運作方式完全相同，如上所述。例如：
  + `/2\d\d/`：接收並轉換成功的回應
  + `/4\d\d/`：接收並轉換不正確的請求錯誤
  + `$default`：接收並轉換所有意外回應

如需範本選擇表達式的更多資訊，請參閱 [範本選擇表達式](websocket-api-data-transformations.md#apigateway-websocket-api-template-selection-expressions)。

## 使用 API Gateway 主控台設定整合回應
<a name="apigateway-websocket-api-integration-response-using-console"></a>

使用 API Gateway 主控台設定 WebSocket API 的路由整合回應：

1. 在以下網址登入 API Gateway 主控台：[https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)。

1.  選擇您的 WebSocket API 並選擇您的路由。

1. 選擇**整合請求**索引標籤，然後在**整合回應設定**區段中，選擇**建立整合回應**。

1. 在**回應金鑰**中輸入值，此值將可在評估回應選擇表達式之後，於傳出訊息的回應金鑰中找到。例如，您可以輸入 **/4\$1d\$1d/** 來接收和轉換錯誤的請求錯誤，或者輸入 **\$1default** 來接收並轉換符合範本選擇表達式的所有回應。

1. 在**範本選擇表達式**中，輸入選擇表達式以評估傳出訊息。

1. 選擇**建立回應**。

1. 您也可以定義對應範本，以設定傳回訊息承載的轉換。選擇**建立範本**。

1. 輸入金鑰名稱。如果您要選擇預設範本選擇表達式，請輸入 **\$1\$1default**。

1. 在程式碼編輯器中，針對**回應範本**輸入您的映射範本。

1. 選擇**建立範本**。

1. 選擇**部署 API** 以部署您的 API。

 使用下列 [ wscat](https://www.npmjs.com/package/wscat) 命令來連線到您的 API。如需 `wscat` 的相關資訊，請參閱 [使用 `wscat` 以連接到 WebSocket API 和將訊息傳送到其中](apigateway-how-to-call-websocket-api-wscat.md)。

```
wscat -c wss://api-id.execute-api.us-east-2.amazonaws.com/test
```

 當您呼叫路由時，傳回的訊息承載應傳回。

## 使用 設定整合回應 AWS CLI
<a name="apigateway-websocket-api-integration-response-using-awscli"></a>

以下 [create-integration-response](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-integration-response.html) 命令會建立 `$default` 整合回應：

```
aws apigatewayv2 create-integration-response \
    --api-id vaz7da96z6 \
    --integration-id a1b2c3 \
    --integration-response-key '$default'
```