在单个Node.js + Express响应中发送图像和JSON数据

时间:2014-01-20 21:58:58

标签: javascript json node.js rest express

我正在使用Node.js和Express创建一个Web API,并打算使用单个响应同时返回图像和JSON数据。我看到了一个指定标题的解决方案:https://stackoverflow.com/a/18864738/1703565但我不想执行两个get请求。我该如何做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以将图像编码为base64字符串(http://nodejs.org/api/buffer.html#buffer_buf_tostring_encoding_start_end),并将其作为JSON的一部分返回。

答案 1 :(得分:1)

缓存

您可以将图像作为普通图像响应正文返回,然后使用相同的请求设置会话cookie。会话cookie将包含JSON数据。加载图像后,您可以通过javascript从cookie中提取JSON数据。

这适用于所有浏览器。唯一的限制是您可以返回的JSON的大小。最大尺寸看起来为4093 bytes

图像编码

如果您的JSON太大而无法容纳在Cookie中,那么您可以将该图像编码为base64对象,并在JSON响应中返回图像数据。

在这种情况下,你必须在画布上重建图像或使用图像数据url格式动态创建一个图像对象作为Kevin的评论中的url。

图像编码的一个缺点是响应的大小增加。粗略地说,在base64中编码后的图像大小将比原始图像37% larger小。


最终,这取决于您的具体需求,哪种方法最符合您的要求。