Conversiones de tipo de contenido en API Gateway
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 de solicitud para configuraciones específicas del encabezado Content-Type
de una solicitud, la lista binaryMediaTypes
de un recurso RestApi y el valor de la propiedad contentHandling
del recurso Integration (Integración).
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 de respuesta para configuraciones específicas del encabezado Accept
de una solicitud, la lista binaryMediaTypes
de un recurso RestApi y el valor de la propiedad contentHandling
del recurso IntegrationResponse (Respuesta de integración).
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 enlace 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 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 en la API.