我正在使用Node.js和Express创建一个Web API,并打算使用单个响应同时返回图像和JSON数据。我看到了一个指定标题的解决方案:https://stackoverflow.com/a/18864738/1703565但我不想执行两个get请求。我该如何做到这一点?
答案 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小。
最终,这取决于您的具体需求,哪种方法最符合您的要求。