

# Tipos de medios binarios para las API de REST en API Gateway
<a name="api-gateway-payload-encodings"></a>

En API Gateway, la solicitud y respuesta de la API tienen una carga de texto o binaria. Una carga de texto es una cadena JSON codificada en `UTF-8`. Una carga binaria es cualquier otra cosa distinta de una carga de texto. La carga binaria puede ser, por ejemplo, un archivo JPEG, un archivo GZip o un archivo XML. La configuración de la API necesaria para admitir medios binarios depende de si la API utiliza integraciones de proxy o que no son de proxy. 

Si utiliza una integración de proxy con transmisión de respuesta de carga útil, no necesita configurar los tipos de medios binarios. Para obtener más información, consulte [Transmisión de la respuesta de integración para las integraciones de proxy en API Gateway](response-transfer-mode.md).

## AWS LambdaIntegraciones proxy de
<a name="api-gateway-payload-encodings-proxy"></a>

Para tratar cargas útiles binarias para integraciones proxy de AWS Lambda, debe codificar a base64 la respuesta de su función. También debe configurar [binaryMediaTypes](https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html#apigw-Type-RestApi-binaryMediaTypes) para su API. La configuración `binaryMediaTypes` de su API es una lista de tipos de contenido que su API trata como datos binarios. Los tipos de medios binarios de ejemplo incluyen `image/png` o `application/octet-stream`. Puede utilizar el carácter comodín (`*`) para cubrir varios tipos de medios.

API Gateway utiliza el primer encabezado `Accept` de los clientes para determinar si una respuesta debe devolver medios binarios. Para devolver medios binarios cuando no se puede controlar el orden de los valores de encabezado `Accept`, como las solicitudes de un navegador, establezca los tipos de medios binarios de la API en `*/*`.

Para ver el código de ejemplo, consulte [Devolución de medios binarios desde una integración de proxy de Lambda en API Gateway](lambda-proxy-binary-media.md).

Si utiliza una integración de proxy de Lambda con transmisión de respuesta de carga útil, no necesita configurar los tipos de medios binarios. Para obtener más información, consulte [Configuración de una integración de proxy de Lambda con transmisión de respuesta de carga útil en API Gateway](response-transfer-mode-lambda.md).

## Integraciones que no son de proxy
<a name="api-gateway-payload-encodings-non-proxy"></a>

Para tratar cargas binarias para integraciones que no son de proxy, agregue los tipos de medios a la lista [binaryMediaTypes](https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html#apigw-Type-RestApi-binaryMediaTypes) del recurso `RestApi`. La configuración `binaryMediaTypes` de su API es una lista de tipos de contenido que su API trata como datos binarios. Como alternativa, puede establecer las propiedades [contentHandling](https://docs.aws.amazon.com/apigateway/latest/api/API_Integration.html#contentHandling) en los recursos [Integration](https://docs.aws.amazon.com/apigateway/latest/api/API_Integration.html) e [IntegrationResponse](https://docs.aws.amazon.com/apigateway/latest/api/API_IntegrationResponse.html). El valor `contentHandling` puede ser `CONVERT_TO_BINARY`, `CONVERT_TO_TEXT` o no estar definido. 

**nota**  
En el caso de las integraciones de `MOCK` o privadas, no se permite establecer las propiedades `contentHandling` en la Consola de administración de AWS. Debe usar la AWS CLI, CloudFormation o un SDK para establecer las propiedades `contentHandling`.

En función del valor de `contentHandling` y de si el encabezado `Content-Type` de la respuesta o el encabezado `Accept` de la solicitud coinciden con una entrada de la lista `binaryMediaTypes`, API Gateway puede codificar los bytes binarios sin formato como una cadena codificada en base64, descodificar una cadena codificada en base64 en sus bytes sin formato o transferir el cuerpo sin realizar ninguna modificación. 

Debe configurar la API como se indica a continuación para que su API de API Gateway admita cargas binarias: 
+ Agregue los tipos de medios binarios que desee a la lista `binaryMediaTypes` en el recurso [RestApi](https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html). Si esta propiedad y la `contentHandling` propiedad no se definen, las cargas se administran como cadenas JSON codificadas en UTF-8.
+ Diríjase a la propiedad `contentHandling` del recurso [Integration](https://docs.aws.amazon.com/apigateway/latest/api/API_Integration.html). 
  + Para que la carga de solicitud se convierta de una cadena codificada en base64 a su blob binario, establezca la propiedad en `CONVERT_TO_BINARY`.
  + Para que la carga de solicitud se convierta de un blob binario a una cadena codificada en base64, establezca la propiedad en `CONVERT_TO_TEXT`.
  + Para pasar la carga útil sin modificaciones, deje la propiedad sin definir. Para pasar una carga binaria sin modificaciones, también debe asegurarse de que `Content-Type` coincide con una de las entradas de `binaryMediaTypes` y que los [comportamientos del acceso directo](integration-passthrough-behaviors.md) están habilitados para la API. 
+ Establezca la propiedad `contentHandling` del recurso [IntegrationResponse](https://docs.aws.amazon.com/apigateway/latest/api/API_IntegrationResponse.html). La propiedad `contentHandling`, el encabezado `Accept` en las solicitudes de cliente y los `binaryMediaTypes` de su API combinados determinan cómo API Gateway trata las conversiones de los tipos de contenido. Para obtener información, consulte [Conversiones de tipo de contenido en API Gateway](api-gateway-payload-encodings-workflow.md). 

**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. 

Para obtener información detallada sobre cómo API Gateway trata el texto y las cargas binarias, consulte [Conversiones de tipo de contenido en API Gateway](api-gateway-payload-encodings-workflow.md).