

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

**참고**  
이 섹션에서는 비프록시 통합에 사용하는 기능에 대해 설명합니다. 그러나 가능하면 REST API에 프록시 통합을 사용하는 것이 좋습니다. 프록시 통합에는 간소화된 통합 설정이 있으며 기존 설정을 손상하지 않고 백엔드와 함께 진화할 수 있습니다. 자세한 내용은 [API Gateway API 통합 유형 선택](api-gateway-api-integration-types.md) 섹션을 참조하세요.

비프록시 통합을 사용하는 경우 API Gateway의 2가지 기능을 사용하여 메서드 요청과 통합 응답을 변환할 수 있습니다. 통합 요청 페이로드와 다른 페이로드 형식을 사용하는 경우 메서드 요청을 변환할 수 있습니다. 메서드 응답에서 반환해야 하는 형식과 다른 페이로드 형식을 반환하는 경우 통합 응답을 변환할 수 있습니다. 요청 수명 주기에 대한 자세한 내용은 [REST API에 대한 리소스 예제](rest-api-develop.md#rest-api-develop-example) 섹션을 참조하시기 바랍니다.

다음 예제는 `"x-version:beta"` 헤더의 경우 `x-version` 헤더 파라미터가 `app-version` 헤더 파라미터로 변환되는 데이터 변환을 보여줍니다. `x-version`에서 `app-version`으로의 데이터 변환은 통합 요청에서 발생합니다. 이렇게 하면 통합 엔드포인트가 변환된 헤더 파라미터 값을 수신합니다. 통합 엔드포인트가 상태 코드를 반환하면 상태 코드가 메서드 응답 전에 `200`에서 `204`로 변환됩니다.

![API Gateway 데이터 변환 다이어그램](http://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/images/develop-non-proxy.png)


데이터 변환을 만들기 위해 다음 기능을 사용할 수 있습니다.

**파라미터 매핑**  
파라미터 매핑에서 통합 요청 URL 경로 파라미터, URL 쿼리 문자열 파라미터 또는 HTTP 헤더 값을 수정할 수 있지만 통합 요청 페이로드를 수정할 수 없습니다. 또한 HTTP 응답 헤더 값을 수정할 수 있습니다. 파라미터 매핑을 사용하여 교차 오리진 리소스 공유(CORS)에 대한 정적 헤더 값을 만듭니다.  
프록시 및 비 프록시 통합에 대한 통합 요청에서 파라미터 매핑을 사용할 수 있지만 통합 응답에 파라미터 매핑을 사용하려면 비 프록시 통합이 필요합니다. 파라미터 매핑에는 [Velocity Template Language(VTL)](https://velocity.apache.org/engine/devel/vtl-reference.html)의 스크립팅이 필요하지 않습니다. 자세한 내용은 [API Gateway의 REST API 대한 파라미터 매핑](rest-api-parameter-mapping.md) 섹션을 참조하세요.

**템플릿 변환 매핑**  
매핑 템플릿 변환에서 매핑 템플릿을 사용하여 URL 경로 파라미터, URL 쿼리 문자열 파라미터, HTTP 헤더, 통합 요청 또는 통합 응답 본문을 매핑합니다. *매핑 템플릿*이란 [Velocity Template Language(VTL)](https://velocity.apache.org/engine/devel/vtl-reference.html)로 표현된 스크립트로, [JSONPath 표현식](https://goessner.net/articles/JsonPath/)을 사용하여 `Content-type` 헤더 기반 페이로드에 적용됩니다.  
매핑 템플릿을 사용하여 다음을 수행할 수 있습니다.  
+ Amazon DynamoDB 또는 Lambda 함수 또는 HTTP 엔드포인트와 같은 AWS 서비스와의 통합을 사용하여 전송할 데이터를 선택합니다. 자세한 내용은 [자습서: AWS 서비스에 대한 통합의 통합 요청 및 응답 수정](set-up-data-transformations-in-api-gateway.md) 섹션을 참조하세요.
+ API의 통합 요청 및 통합 응답 파라미터를 조건부로 재정의하고, 새 헤더 값을 만들고, 상태 코드를 재정의합니다. 자세한 내용은 [API Gateway에서 REST API에 대한 API 요청, 응답 파라미터, 상태 코드 재정의](apigateway-override-request-response-parameters.md) 섹션을 참조하세요.
또한 통합 요청 본문에 일치하는 매핑 템플릿이 없는 `Content-type` 헤더가 있는 경우 API의 동작을 지정할 수 있습니다. 통합 패스스루 동작이라고 합니다. 자세한 내용은 [API Gateway의 REST API에 대한 매핑 템플릿이 없는 페이로드의 메서드 요청 동작](integration-passthrough-behaviors.md) 섹션을 참조하세요.

## 파라미터 매핑과 매핑 템플릿 변환 중에서 선택
<a name="rest-api-data-transformations-choose"></a>

가능하면 파라미터 매핑을 사용하여 데이터를 변환하는 것이 좋습니다. API에서 본문을 변경해야 하거나 수신 통합 요청 또는 통합 응답에 따라 조건부 재정의 및 수정을 수행해야 하고 프록시 통합을 사용할 수 없는 경우 매핑 템플릿 변환을 사용합니다.