从https节点请求

时间:2018-01-18 18:07:20

标签: javascript node.js api

我试图从response_handler函数检索响应(var body)到my / image / search路由。但问题是我不能通过使它(var body)成为全局变量来实现它,因为它是异步的。

router.get('/imagesearch/:term', (req, res) => {
    let term = req.params.term;
    bing_web_search(term);
    res.json('trying to add json response here')
});

let host = 'api.cognitive.microsoft.com';
let path = '/bing/v7.0/search';

let response_handler = function (response) {
    let body = '';
    response.on('data', function (d) {
        body += d;
    });
    response.on('end', function () {
        console.log('\nRelevant Headers:\n');
        for (var header in response.headers)
            // header keys are lower-cased by Node.js
            if (header.startsWith("bingapis-") || header.startsWith("x-msedge-"))
                 console.log(header + ": " + response.headers[header]);
        body = JSON.stringify(JSON.parse(body), null, '  ');
        console.log('\nJSON Response:\n');
        console.log(body);
    });
    response.on('error', function (e) {
        console.log('Error: ' + e.message);
    });
};

let bing_web_search = function (search) {
  console.log('Searching the Web for: ' + search);
  let request_params = {
        method : 'GET',
        hostname : host,
        path : path + '?q=' + encodeURIComponent(search),
        headers : {
            'Ocp-Apim-Subscription-Key' : subscriptionKey,
        }
    };

    let req = https.request(request_params, response_handler);
    req.end();
}

0 个答案:

没有答案