/ / Enviar dados de imagem e JSON em resposta única de Node.js + Express - javascript, json, node.js, rest, express

Envie dados de imagem e JSON em uma única resposta do Node.js + Express - javascript, json, node.js, rest, express

Estou criando uma API da web com Node.js e Express e pretendo usar uma única resposta para retornar uma imagem e dados JSON simultaneamente. Eu vi uma solução para especificar cabeçalhos: https://stackoverflow.com/a/18864738/1703565 mas eu não quero executar dois pedidos get. Como faço isso?

Respostas:

1 para resposta № 1

Você poderia retornar a imagem como uma imagem normalcorpo da resposta e, em seguida, defina um cookie de sessão com a mesma solicitação. O cookie da sessão conteria os dados JSON. Depois que a imagem for carregada, você poderá extrair os dados JSON do cookie por meio do javascript.

Isso funcionaria em todos os navegadores. Apenas limitação seria o tamanho do JSON que você poderia retornar. Tamanho máximo parece ser 4093 bytes.

Codificação de imagem

Se seu JSON for grande demais para caber em um cookie, você poderá codificar a imagem como um objeto base64 e retornar os dados da imagem na resposta JSON.

Nesse caso, você teria que reconstruir a imagem em uma tela ou usar o formato de URL de dados da imagem para criar dinamicamente um objeto de imagem como o URL no comentário de Kevin.

Uma desvantagem da codificação de imagens seria o aumento do tamanho da resposta. Aproximadamente, o tamanho da imagem após a codificação em base64 seria 37% maior que a imagem original.


Em última análise, depende de suas necessidades específicas quanto ao método que melhor se adequa às suas necessidades.


2 para resposta № 2

Você poderia codificar a imagem como uma string base64 (http://nodejs.org/api/buffer.html#buffer_buf_tostring_encoding_start_end) e retorne isso como parte de seu JSON.