/ / Enviar imagen y datos JSON en una sola respuesta Node.js + Express: javascript, json, node.js, rest, express

Envíe imágenes y datos JSON en una sola respuesta Node.js + Express: javascript, json, node.js, rest, express

Estoy creando una API web con Node.js y Express y tengo la intención de usar una sola respuesta para devolver una imagen y datos JSON simultáneamente. Vi una solución para especificar los encabezados: https://stackoverflow.com/a/18864738/1703565 pero no quiero realizar dos solicitudes de obtención. ¿Cómo logro esto?

Respuestas

1 para la respuesta № 1

Podrías devolver la imagen como una imagen normal.cuerpo de respuesta y luego establecer una cookie de sesión con la misma solicitud. La cookie de sesión contendría los datos JSON. Una vez que se carga la imagen, puede extraer los datos JSON de la cookie a través de javascript.

Esto funcionaría en todos los navegadores. La única limitación sería el tamaño del JSON que podría devolver. El tamaño máximo parece ser 4093 bytes.

Codificación de imágenes

Si su JSON es demasiado grande para caber en una cookie, entonces podría codificar la imagen como un objeto base64 y devolver los datos de la imagen en la respuesta JSON.

En este caso, tendría que reconstruir la imagen en un lienzo o utilizar el formato de url de datos de imagen para crear dinámicamente un objeto de imagen como lo hace la url en el comentario de Kevin.

Un inconveniente de la codificación de la imagen sería el aumento del tamaño de la respuesta. A grandes rasgos, el tamaño de la imagen después de la codificación en base64 sería 37% más grande que la imagen original.


En última instancia, depende de sus necesidades específicas en cuanto al método que mejor se ajuste a sus necesidades.


2 para la respuesta № 2

Podría codificar la imagen como una cadena base64 (http://nodejs.org/api/buffer.html#buffer_buf_tostring_encoding_start_end), y devuelve esto como parte de su JSON.