无法使用 node.js 将 HTTP GET 嵌套在另一个内部

Can't nest HTTP GET inside another with node.js

我想做一个很简单的任务,但是我卡住了!

场景是这样的:

在对我的 api 发出获取请求后,我想从某个外部站点 http.get,然后将来自该外部站点的响应发送回原始 api 请求。

显然,调用是异步的,因此字符串 loremParagraph 在发送回 api 之前无法正确加载。

我还收到错误:错误:发送后无法设置 headers。

这是我的代码:

module.exports = function(app, express) {

var myLoremRouter = express.Router();

var loremParagraph = '';
//HTTP GET accessed at localhost:8081/mylorem
myLoremRouter.get('/', function(req, res) {

    // Fetch one paragpraphlorem ipsum text from http://www.faux-texte.com/text-random-1.htm
    http.get("http://www.faux-texte.com/text-random-1.html", function(resp) {
            resp.on('data', function(chunk) {
                // console.log('BODY: ' + chunk);
                var $ = cheerio.load(chunk);
                loremParagraph = $('div.Texte').text();
                console.log(loremParagraph);
                // console.log(resp.status);

            });

        })
        // If any error has occured, log error to console
        .on('error', function(e) {
            console.log("Got error: " + e.message);
        });

    //Finally send the result back to the api call
    res.json({ message: loremParagraph });
});

return myLoremRouter;

};

试试这个。在这里添加块,直到我们准备好使用完整的数据。

myLoremRouter.get('/', function(req, res) {
    var body = '';
    http.get({
        host: 'www.faux-texte.com',
        port: 80,
        path: '/text-random-1.html'
    }, function(resp) {
        resp.on('data', function(chunk) {
            body += chunk;
        });
        resp.on('end', function(chunk) {
            var $ = cheerio.load(body);
            loremParagraph = $('div.Texte').text();
            res.json({ message: loremParagraph });
        });
    })
    .on('error', function(e) {
        // handle/send error
        res.send(/*...*/);
    });
});