

# API Gateway에서 WebSocket API의 데이터 변환
<a name="websocket-api-data-transformations"></a>

API Gateway에서 WebSocket API 메서드 요청은 백엔드의 요구에 따라 해당하는 통합 요청 페이로드에서 여러 유형의 페이로드를 취할 수 있습니다. 마찬가지로 백엔드에서는 프런트 엔드에서 기대하는 메서드 응답 페이로드가 아니라 통합 응답 페이로드를 반환할 수 있습니다.

API Gateway에서는 매핑 템플릿 변환을 사용하여 메서드 요청에서 해당 통합 요청으로, 통합 응답에서 해당 메서드 응답으로 페이로드를 매핑할 수 있습니다. 매핑 템플릿을 만들고 템플릿 선택 표현식을 지정하여 필요한 데이터 변환을 수행하는 데 사용할 템플릿을 결정합니다.

데이터 매핑을 사용하면 [라우팅 요청](api-gateway-basic-concept.md#apigateway-definition-route-request)의 데이터를 백엔드 통합에 매핑할 수 있습니다. 자세한 내용은 [API Gateway에서 WebSocket API에 대한 데이터 매핑 설정](websocket-api-data-mapping.md) 단원을 참조하십시오.

## 매핑 템플릿 및 모델
<a name="apigateway-websocket-api-mapping-templats-and-models"></a>

 *매핑 템플릿*이란 [VTL(Velocity Template Language)](https://velocity.apache.org/engine/devel/vtl-reference.html)로 표현된 스크립트로, [JSONPath 표현식](https://goessner.net/articles/JsonPath/)을 사용하여 페이로드에 적용됩니다. API Gateway 매핑 템플릿에 대한 자세한 내용은 [API Gateway에서 REST API의 데이터 변환 매핑](models-mappings.md) 단원을 참조하세요.

페이로드는 [JSON 스키마 draft 4](https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-04)에 따라 *데이터 모델*을 가질 수 있습니다. 매핑 템플릿을 생성하기 위해 모델을 정의할 필요는 없습니다. 그러나 API Gateway에서는 제공된 모델에 따라 템플릿 블루프린트를 생성하기 때문에 모델이 있으면 템플릿을 생성하는 데 도움이 됩니다. API Gateway 모델에 대한 자세한 내용은 [REST API에 대한 데이터 모델](models-mappings-models.md) 단원을 참조하세요.

## 템플릿 선택 표현식
<a name="apigateway-websocket-api-template-selection-expressions"></a>

매핑 템플릿을 사용하여 페이로드를 변환하려면 [통합 요청](apigateway-websocket-api-integration-requests.md) 또는 [통합 응답](apigateway-websocket-api-integration-responses.md)에서 WebSocket API 템플릿 선택 표현식을 지정합니다. 이 표현식은 요청 본문을 (입력 템플릿을 통해) 요청 본문으로 변환하거나 통합 응답 본문을 (출력 템플릿을 통해) 라우팅 응답 본문으로 변환하는 데 사용할 입력 또는 출력 템플릿(있는 경우)를 판별하기 위해 평가됩니다.

`Integration.TemplateSelectionExpression`은 `${request.body.jsonPath}`와 정적 값을 지원합니다.

`IntegrationResponse.TemplateSelectionExpression`은 `${request.body.jsonPath}`, `${integration.response.statuscode}`, `${integration.response.header.headerName}`, `${integration.response.multivalueheader.headerName}` 및 정적 값을 지원합니다.

## 통합 응답 선택 표현식
<a name="apigateway-websocket-api-integration-response-selection-expressions"></a>

WebSocket API에 대해 [통합 응답을 설정](apigateway-websocket-api-integration-responses.md)할 때 선택적으로 통합 응답 선택 표현식을 지정할 수 있습니다. 이 표현식은 통합이 반환될 때 어떤 `[https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/apis-apiid-integrations-integrationid-integrationresponses-integrationresponseid.html](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/apis-apiid-integrations-integrationid-integrationresponses-integrationresponseid.html)`가 선택되어야 하는지 결정합니다. 이 표현식의 값은 현재 아래에 정의된 대로 API 게이트웨이에 의해 제한됩니다. 이 표현식은 *비 프록시 통합*에만 해당한다는 점에 유의하십시오. 프록시 통합은 모델링이나 수정 없이 단순히 응답 페이로드를 호출자에게 다시 전달하기만 합니다.

이전의 다른 선택 표현식과 달리 이 표현식은 현재 *패턴 일치* 형식을 지원합니다. 표현식은 슬래시로 래핑해야 합니다.

현재 이 값은 `[https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/apis-apiid-integrations-integrationid.html#apis-apiid-integrations-integrationid-prop-integration-integrationtype](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/apis-apiid-integrations-integrationid.html#apis-apiid-integrations-integrationid-prop-integration-integrationtype)`에 따라 고정됩니다.
+ Lambda 기반 통합의 경우 `$integration.response.body.errorMessage`입니다.
+ `HTTP` 및 `MOCK` 통합의 경우 `$integration.response.statuscode`입니다.
+ `HTTP_PROXY` 및 `AWS_PROXY`의 경우 페이로드가 호출자에게 패스스루 되도록 요청하기 때문에 표현식이 사용되지 않습니다.