Node JS在rest api响应中返回图像[关闭]

Posted

技术标签:

【中文标题】Node JS在rest api响应中返回图像[关闭]【英文标题】:Node JS return image in rest api response [closed] 【发布时间】:2015-04-04 16:14:19 【问题描述】:

在获取用户信息的其余 api 调用中,我想将用户信息与图像一起返回。谁能告诉如何返回图像以及节点 js 中的信息。以及如何查看在 web 客户端(如邮递员)中返回的信息。

【问题讨论】:

【参考方案1】:

如果你想将图片作为二进制数据发送,你可以使用内置的res.sendFile函数。

如果您希望此图像仅对当前用户可用,您可以使用像 passportjs 这样的授权框架,甚至可以使用像 huntjs 这样的高级框架,其中包含所有内容。

以下示例检查req.user 是否存在,然后发送JSON 与图像的链接或图像本身。 如果图像很小,最好发送base64 编码版本。

app.get('/info', function(req,res)
    if(req.user)
        res.status(200).json(
            'imageName':'some image',
            'imageUrl':'/someImageUrlOnlyForAuthorizedUsers.jpg'
        );
     else 
        res.status(401).send('Authorization required!');
    
);

app.get('/someImageUrlOnlyForAuthorizedUsers.jpg', function(req,res)
    if(req.user)
        res.sendFile('./mySecretImage.jpg');
     else 
        res.status(401).send('Authorization required!');
    
);

【讨论】:

谢谢,但如果我发送图像的直接 url,那么任何人都可以访问该图像可能存在安全威胁。 我已经扩展了我的答案 这听起来是个好主意。我还可以同时发送 json 响应和文件。我的意思是我想返回用户信息和用户的图片可以用相同的响应完成吗? 是的。如果用户的头像非常小,您可以使用 base64 对其进行编码并将其作为 - 参见 en.wikipedia.org/wiki/Data:_URL

以上是关于Node JS在rest api响应中返回图像[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 通过 REST API 发送图像

如何防止 Node.js API REST 应用程序对高 CPU/RAM 使用率无响应?

如何在 Node.js 中使用带有 API 网关的 AWS Lambda 发送二进制响应? [复制]

发送响应后如何在node.js api中运行后台任务?

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

node.js - 将图像缓存到文件系统并将图像通过管道传输到响应