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 № 1Você 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.