API Gateway 中 WebSocket API 的資料轉換 - Amazon API Gateway

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

API Gateway 中 WebSocket API 的資料轉換

在 API Gateway 中, WebSocket API 的方法請求可以根據後端的要求,以與對應的整合請求有效負載不同的格式獲取有效負載。同樣地,後端可能會依照前端的預期,傳回與方法回應承載不同的整合回應承載。

API Gateway 可讓您使用對應範本,將承載從方法請求對應到對應的整合請求,以及從整合回應對應到對應的方法回應。您可以指定範本選取表示式,以決定要使用哪個範本來執行必要的資料轉換。

您可以使用資料映射,將 路由請求 中的資料映射至後端整合。如需進一步了解,請參閱設定 WebSocket API 的資料對應

對應範本和模型

對應範本是以 Velocity 範本語言 (VTL) 表示,並使用 JSONPath 表達式套用至承載的指令碼。如需 API Gateway 對應範本的詳細資訊,請參閱 適用於其他 API 的對應範本

根據 JSON 結構描述草稿第 4 版,承載可以有一個資料模型。您不需要定義任何模型,即可建立對應範本。不過,模型可協助您建立範本,因為 API Gateway 會根據提供的模型產生範本藍圖。如需 API Gateway 模型的詳細資訊,請參閱 適用於其他 API 的資料模型

範本選擇表達式

若要使用對應範本轉換承載,您可以在整合要求或整合回應中指定 WebSocket API 範本選取運算式。此表達式的評估結果會判定輸入或輸出範本 (如有),輸入範本可將請求本文轉換為整合請求本文,輸出範本則可將整合回應本文轉換為路由回應本文。

Integration.TemplateSelectionExpression 支援 ${request.body.jsonPath} 和靜態值。

IntegrationResponse.TemplateSelectionExpression 支援 ${request.body.jsonPath}${integration.response.statuscode}${integration.response.header.headerName}${integration.response.multivalueheader.headerName} 和靜態值。

整合回應選擇表達式

當您設定 WebSocket API 的整合回應時,您可以選擇性地指定整合回應選取項運算式。此運算式會判定整合回傳時應選取的 IntegrationResponse。此表達式的值目前正受 API Gateway 限制,規則如下。請注意,此表達式只與非代理整合有關;代理整合只要將回應承載回傳給發起人即可,無須建模或修改。

此表達式與上述選擇表達式不同,目前支援模式比對格式。此表達式應以斜線包裝。

目前固定的值視 integrationType 而異:

  • 若是 Lambda 型整合,此值為 $integration.response.body.errorMessage

  • 若是 HTTPMOCK 整合,此值為 $integration.response.statuscode

  • 若是 HTTP_PROXYAWS_PROXY,將不會運用此表達式,因為您請求將承載傳遞給發起人。