我正在使用外部服务来创建图片。我希望我的用户能够点击我的API并询问图像。然后我的Express服务器将从外部服务检索它,然后将其提供给用户。我认为有点像代理,但不完全是。
有没有一种简单的方法可以做到这一点,最好不要将图像下载到硬盘驱动器,然后将其重新读入并提供给它?
使用请求库,我能够想出这个:
var request = require("request");
exports.relayImage = function(req, res){
request(req.params.url).pipe(res);
}
这似乎有效。如果有更有效的方法(意味着服务器资源,而不是代码行),请说出来!
答案 0 :(得分:2)
您正在做的正是您应该做的事情,并且是最有效的方法。使用管道,数据在进入时发送,不需要额外的资源来缓冲和传输。
还要注意您可能想要转发的内容类型和其他响应标头。最后,要意识到您已经有效地构建了一个开放代理,任何人都可以通过您的服务器请求任何他们想要的东这有点危险,所以请务必将其锁定在最终的应用程序中。
答案 1 :(得分:0)
您应该能够使用http模块通过回调向外部图像服务发出请求,该回调将图像作为响应返回。除非您明确告诉它,否则它不会写入磁盘。