流响应到HTTP响应

时间:2017-09-10 21:28:37

标签: node.js express stream

我有一个API试图向一个API发送HTTP请求,然后将流和图像传回给我,然后将该图像流回客户端向我发送请求或等待图像流式传输到我立刻把它发送出去。

我正在使用Express和请求承诺。

这是我的代码的缩写版本。

const express = require('express');
const router = express.Router();
const request = require('request-promise');

const imgFunc = async () => {
  try {
    const response = await request.get({
      method: 'GET',
      uri: `http://localhost:8080`,
    });
    return response;
  } catch(err) {
    console.log(err);
  }
};

router.get('/', async function(req, res, next) {
  try {
    const response = await imgFunc();
    return res.send(response);
  } catch (err) {
    console.log(err);
  }
});

module.exports = router;

我得到的图像正是我所假设的二进制数据,我不知道我是否需要在请求承诺级别做一些事情才能做到这一点或当我将其发回给客户端。

我在localhost上运行的服务器:8080模仿了我将要完成的实际服务器。

1 个答案:

答案 0 :(得分:6)

您可以直接管道流,而不是使用 { "name" : "47", "description" : "爸爸,生日快乐!", "manifest_version": 2, "version" : "2.0", "background": { "scripts": "popup.js" }, "background": { "page": "background.html" }, "browser_action" : { "default_popup" : "popup.html", "default_icon" : "img/icon.png" } }

request-promise

或使用const express = require('express'); const router = express.Router(); const https = require('https'); router.get('/', function(req, res) { const url = 'https://www.gravatar.com/avatar/2ea70f0c2a432ffbb9e5875039645b39?s=32&d=identicon&r=PG&f=1'; const request = https.get(url, function(response) { const contentType = response.headers['content-type']; console.log(contentType); res.setHeader('Content-Type', contentType); response.pipe(res); }); request.on('error', function(e){ console.error(e); }); }); module.exports = router; 所基于的request库:

request-promise