在 API Gateway 中設定 WebSocket API 整合回應 - Amazon API Gateway

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

在 API Gateway 中設定 WebSocket API 整合回應

整合回應概觀

API Gateway 的整合回應是從後端服務建模並操控回應的方式。REST API 與 WebSocket API 集成響應的設置有一些差異,但在概念上,行為是相同的。

WebSocket 路由可以設定為雙向或單向通訊。

  • 路由設定為雙向通訊時,整合回應可讓您設定回傳訊息承載的轉換,類似 REST API 的整合回應。

  • 如果將路由設定為單向通訊,則無論任何整合回應組態為何,在處理訊息之後,都不會透過通 WebSocket 道傳回任何回應。

API Gateway 不會將後端回應傳遞至路由回應,除非您有設定路由回應。若要了解設定路由回應,請參閱 在 API Gateway 中設定 WebSocket API 的路由回應

雙向通訊的整合回應

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

重要

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

非代理整合而言,您必須設定至少一個整合回應:

  • 在沒有明確選擇時,其中一個整合回應最好設定為全部截獲。將整合回應金鑰設定為 $default 就是此預設案例的代表。

  • 在其他情況下,整合回應金鑰會以常規表達式運作,應遵循 "/expression/" 的格式。

以非代理 HTTP 整合而言:

  • API Gateway 將嘗試比對後端回應的 HTTP 狀態碼。整合回應金鑰此時會以常規表達式運作,若找不到配對項目,將選擇 $default 做為整合回應。

  • 範本選擇表達式運作方式完全相同,如上所述。例如:

    • /2\d\d/:接收並轉換成功的回應

    • /4\d\d/:接收並轉換不正確的請求錯誤

    • $default:接收並轉換所有意外回應

如需範本選擇表達式的更多資訊,請參閱 範本選擇表達式

使用 API Gateway 主控台設定整合回應

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

  1. 在以下網址登入 API Gateway 主控台:https://console.aws.amazon.com/apigateway

  2. 選擇您的 WebSocket API 並選擇您的路線。

  3. 選擇整合請求索引標籤,然後在整合回應設定區段中,選擇建立整合回應

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

  5. 範本選擇表達式中,輸入選擇表達式以評估傳出訊息。

  6. 選擇建立回應

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

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

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

  10. 選擇建立範本

  11. 選擇部署 API 以部署您的 API。

使用下列 wscat 命令來連線到您的 API。如需 wscat 的相關資訊,請參閱 用wscat於連接到 WebSocket API 並向其發送消息

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

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

使用設定整合回應 AWS CLI

若要使用 AWS CLI 呼叫create-integration-response命令設定 WebSocket API 的整合回應。下列 CLI 命令顯示建立 $default 整合回應的範例:

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