

# Transformaciones de datos para las API de REST en API Gateway
<a name="rest-api-data-transformations"></a>

**nota**  
En esta sección se explican las características que se utilizan con una integración sin proxy. No obstante, recomendamos que, siempre que sea posible, utilice una integración de proxy para la API de REST. Una integración de proxy HTTP tiene una configuración de integración simplificada y puede evolucionar con el backend sin tener que eliminar la configuración existente. Para obtener más información, consulte [Elegir un tipo de integración de API de API Gateway](api-gateway-api-integration-types.md).

Si utiliza una integración sin proxy, puede utilizar dos características de API Gateway para transformar la solicitud de método y la respuesta de integración. Podría transformar la solicitud de método si esta tiene un formato de carga útil diferente al de la carga útil de la solicitud de integración. Podría transformar la respuesta de integración si devuelve un formato de carga útil diferente al formato que necesita devolver en la respuesta del método. Para obtener más información sobre el ciclo de vida de la solicitud, consulte [Recurso de ejemplo para una API de REST](rest-api-develop.md#rest-api-develop-example).

En el siguiente ejemplo se muestra una transformación de datos en la que, para el encabezado `"x-version:beta"`, el parámetro de encabezado `x-version` se transforma en el parámetro de encabezado `app-version`. La transformación de datos de `x-version` a `app-version` se produce en la solicitud de integración. De esta manera, el punto de conexión de integración recibe el valor del parámetro de encabezado transformado. Cuando el punto de conexión de integración devuelve un código de estado, este se transforma de `200` a `204` antes de la respuesta de método.

![\[Diagrama de transformación de datos de API Gateway\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/images/develop-non-proxy.png)


Para crear una transformación de datos, puede utilizar las siguientes características:

**Asignación de parámetros**  
En la asignación de parámetros, puede modificar los parámetros de ruta de URL de solicitud de integración, los parámetros de cadena de consulta de URL o los valores de encabezado HTTP, pero no puede modificar la carga útil de solicitud de integración. También puede modificar los valores de encabezado de respuesta HTTP. Utilice la asignación de parámetros para crear valores de encabezado estáticos para el uso compartido de recursos entre orígenes (CORS).   
Puede usar la asignación de parámetros en la solicitud de integración para integraciones de proxy y de no proxy, pero para usar la asignación de parámetros para una respuesta de integración, necesita una integración de no proxy. La asignación de parámetros no requiere ningún script en [Velocity Template Language (VTL)](https://velocity.apache.org/engine/devel/vtl-reference.html). Para obtener más información, consulte [Asignación de parámetros para las API de REST en API Gateway](rest-api-parameter-mapping.md).

**Transformaciones de plantillas de asignación**  
En las transformaciones de plantillas de asignación, se utiliza una plantilla de asignación para asignar parámetros de ruta de URL, parámetros de cadena de consulta de URL, encabezados HTTP y el cuerpo de solicitud de integración o de respuesta de integración. Una *plantilla de asignación* es un script expresado en [Velocity Template Language (VTL)](https://velocity.apache.org/engine/devel/vtl-reference.html) mediante [expresiones JSONPath](https://goessner.net/articles/JsonPath/) y aplicado a la carga útil en función del encabezado `Content-type`.  
Con una plantilla de asignación, puede hacer lo siguiente:  
+ Seleccionar los datos que desee enviar mediante la integración con Servicios de AWS, como las funciones de Amazon DynamoDB o de Lambda o los puntos de conexión HTTP. Para obtener más información, consulte [Tutorial: modificación de la solicitud y respuesta de integración para integraciones con servicios de AWS](set-up-data-transformations-in-api-gateway.md).
+ Anular condicionalmente los parámetros de solicitud de integración y de respuesta de integración de una API, crear nuevos valores de encabezado y anular códigos de estado. Para obtener más información, consulte [Anulación de los parámetros de solicitud y respuesta y de los códigos de estado de la API para las API de REST en API Gateway](apigateway-override-request-response-parameters.md).
También puede especificar el comportamiento de la API cuando el cuerpo de una solicitud de integración tenga un encabezado `Content-type` sin plantillas de asignación que coincidan. Esto se denomina comportamiento de acceso directo a la integración. Para obtener más información, consulte [Comportamiento de solicitud de método para cargas útiles sin plantillas de asignación para las API de REST en API Gateway](integration-passthrough-behaviors.md). 

## Elección entre la asignación de parámetros y las transformaciones de plantillas de asignación
<a name="rest-api-data-transformations-choose"></a>

Le recomendamos que utilice la asignación de parámetros para transformar los datos siempre que sea posible. Si la API requiere que cambie el cuerpo o que realice modificaciones y anulaciones condicionales basadas en la solicitud de integración entrante o en la respuesta de integración y no puede utilizar una integración de proxy, utilice las transformaciones de plantillas de asignación.