

# Conversiones de tipo de contenido en API Gateway
<a name="api-gateway-payload-encodings-workflow"></a>

 La combinación de los `binaryMediaTypes` de su API, los encabezados de las solicitudes de cliente y la propiedad `contentHandling` de integración determinan cómo API Gateway codifica las cargas útiles.

La siguiente tabla muestra cómo API Gateway convierte la carga útil de solicitud para configuraciones específicas del encabezado `Content-Type` de una solicitud, la lista `binaryMediaTypes` de un recurso [RestApi](https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html) y el valor de la propiedad `contentHandling` del recurso [Integración](https://docs.aws.amazon.com/apigateway/latest/api/API_Integration.html).


| Carga de solicitud de método | Encabezado `Content-Type` de solicitud | `binaryMediaTypes` | `contentHandling` | Carga de solicitud de integración | 
| --- | --- | --- | --- | --- | 
| Datos de texto | Cualquier tipo de datos | Sin definir | Sin definir | Cadena codificada en UTF8 | 
| Datos de texto | Cualquier tipo de datos | Sin definir | CONVERT\_TO\_BINARY | Blob binario descodificado en Base64 | 
| Datos de texto | Cualquier tipo de datos | Sin definir | CONVERT\_TO\_TEXT | Cadena codificada en UTF8 | 
| Datos de texto | Un tipo de datos de texto | Establecida con tipos de medios coincidentes | Sin definir | Datos de texto | 
| Datos de texto | Un tipo de datos de texto | Establecida con tipos de medios coincidentes | CONVERT\_TO\_BINARY | Blob binario descodificado en Base64 | 
| Datos de texto | Un tipo de datos de texto | Establecida con tipos de medios coincidentes | CONVERT\_TO\_TEXT | Datos de texto | 
| Datos binarios | Un tipo de datos binarios | Establecida con tipos de medios coincidentes | Sin definir | Datos binarios | 
| Datos binarios | Un tipo de datos binarios | Establecida con tipos de medios coincidentes | CONVERT\_TO\_BINARY | Datos binarios | 
| Datos binarios | Un tipo de datos binarios | Establecida con tipos de medios coincidentes | CONVERT\_TO\_TEXT | Cadena codificada en Base64 | 

La siguiente tabla muestra cómo API Gateway convierte la carga útil de respuesta para configuraciones específicas del encabezado `Accept` de una solicitud, la lista `binaryMediaTypes` de un recurso [RestApi](https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html) y el valor de la propiedad `contentHandling` del recurso [Respuesta de integración](https://docs.aws.amazon.com/apigateway/latest/api/API_IntegrationResponse.html).

**importante**  
 Cuando una solicitud contiene varios tipos de medios en su encabezado `Accept`, API Gateway solo respeta el primer tipo de medio `Accept`. Si no puede controlar el orden de los tipos de medios `Accept` y el tipo de medio del contenido binario no sea el primero de la lista, agregue el primer tipo de medio `Accept` en la lista `binaryMediaTypes` de la API. API Gateway gestiona todos los tipos de contenido de esta lista como binarios.   
Por ejemplo, para enviar un archivo JPEG utilizando un elemento `<img>` en un navegador, el navegador puede enviar `Accept:image/webp,image/*,*/*;q=0.8` en una solicitud. Al añadir `image/webp` a la lista `binaryMediaTypes`, el punto de conexión recibe el archivo JPEG como binario. 


| Carga de respuesta de integración | Encabezado `Accept` de solicitud | `binaryMediaTypes` | `contentHandling` | Carga de respuesta de método | 
| --- | --- | --- | --- | --- | 
| Datos de texto o binarios | Un tipo de texto | Sin definir | Sin definir | Cadena codificada en UTF8 | 
| Datos de texto o binarios | Un tipo de texto | Sin definir | CONVERT\_TO\_BINARY | Blob descodificado en Base64 | 
| Datos de texto o binarios | Un tipo de texto | Sin definir | CONVERT\_TO\_TEXT | Cadena codificada en UTF8 | 
| Datos de texto | Un tipo de texto | Establecida con tipos de medios coincidentes | Sin definir | Datos de texto | 
| Datos de texto | Un tipo de texto | Establecida con tipos de medios coincidentes | CONVERT\_TO\_BINARY | Blob descodificado en Base64 | 
| Datos de texto | Un tipo de texto | Establecida con tipos de medios coincidentes | CONVERT\_TO\_TEXT | Cadena codificada en UTF8 | 
| Datos de texto | Un tipo binario | Establecida con tipos de medios coincidentes | Sin definir | Blob descodificado en Base64 | 
| Datos de texto | Un tipo binario | Establecida con tipos de medios coincidentes | CONVERT\_TO\_BINARY | Blob descodificado en Base64 | 
| Datos de texto | Un tipo binario | Establecida con tipos de medios coincidentes | CONVERT\_TO\_TEXT | Cadena codificada en UTF8 | 
| Datos binarios | Un tipo de texto | Establecida con tipos de medios coincidentes | Sin definir | Cadena codificada en Base64 | 
| Datos binarios | Un tipo de texto | Establecida con tipos de medios coincidentes | CONVERT\_TO\_BINARY | Datos binarios | 
| Datos binarios | Un tipo de texto | Establecida con tipos de medios coincidentes | CONVERT\_TO\_TEXT | Cadena codificada en Base64 | 
| Datos binarios | Un tipo binario | Establecida con tipos de medios coincidentes | Sin definir | Datos binarios | 
| Datos binarios | Un tipo binario | Establecida con tipos de medios coincidentes | CONVERT\_TO\_BINARY | Datos binarios | 
| Datos binarios | Un tipo binario | Establecida con tipos de medios coincidentes | CONVERT\_TO\_TEXT | Cadena codificada en Base64 | 

Cuando se convierte una carga de texto en un blob binario, API Gateway asume que los datos de texto son una cadena codificada en base64 y envía los datos binarios como un blob descodificado en base64. Si la conversión produce un error, devuelve una respuesta `500`, que indica un error de configuración de la API. No tiene que proporcionar una plantilla de asignación para este tipo de conversión, pero sí debe habilitar los [comportamientos de paso a través](integration-passthrough-behaviors.md) en la API.

Al convertir una carga binaria en una cadena de texto, API Gateway siempre aplica una codificación en base64 a los datos binarios. Puede definir una plantilla de asignación para este tipo de carga, pero solo puede tener acceso a la cadena codificada en base64 en la plantilla de asignación a través de `$input.body`, tal y como se muestra en el fragmento siguiente de una plantilla de asignación de ejemplo. 

```
{   
    "data": "$input.body"
}
```

Para que se transfiera la carga binaria sin modificaciones, debe habilitar los [comportamientos de paso a través](integration-passthrough-behaviors.md) en la API. 