Conversiones de tipo de contenido en API Gateway - Amazon API Gateway

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

Conversiones de tipo de contenido de solicitudes de API en API Gateway
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.

Conversiones de tipo de contenido de respuesta en API Gateway
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.