简体   繁体   中英

REST API node.js

I am trying to retrieve data from a REST API in the server side ( .js) and display it in my view ( .jade)

I was able to get the data but was not able to send it to the view . This is how my code looks like :

 var BugData ='initial data' ;
 var https = require('https');

var optionsget = {
    rejectUnauthorized: false,
    host : 'My host', // here only the domain name
    // (no http/https !)
    port : 443,
    path : 'Mypath', // the rest of the url with parameters if needed
    method : 'GET' // do GET
};

console.info('Options prepared:');
console.info(optionsget);
console.info('Do the GET call');
// do the GET request
var reqGet = https.request(optionsget, function(res) {
    console.log("statusCode: ", res.statusCode);

       res.on('data', function(d) {
        console.info('GET result:\n');

        BugData =d; 
        console.log('Show Data  : ***** \n' +d);  


    }); 

}); 

reqGet.end();
reqGet.on('error', function(e) {
    console.error(e);
});

res.render('index', { ab:BugData});

BugData (was defined before )is the variable i am trying to send to the view but for some reasons it is empty and does not contain the variable 'd'

Does anyone know why or how can i solve this ? Thanks

There is no need to write that long code.

Be simple, follow these steps:

1) install request package:

npm install --save request

2) outside of router add:

var request = require('request');

process.env.NODE_TLS_REJECT_UNAUTHORIZED = 0;

3) use this code inside router:

request.get({url: 'https://my-host/Mypath'}, function(err, response, body) {
      var data = {};

      if (err) {
          console.error(err);
          data.err = err;
      }

      data.ab = body;
      console.log('Data: ', data);

      res.render('index', data);
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM