Access rest api using nodejs

10,313

Solution 1

Because Node runs asynchronously, the returned data is broken into chunks.

The .on('data') event returns a portion of the data, which you then need to stitch/append back to a variable. You can then capture the complete output with .on('end').

See this example for more info: Why is node.js breaking incoming data into chunks? (@vossad01's answer)

That said, @SilviuBurcea's suggestion to use request is a much simpler way of handling http requests so you don't have to write and handle all of this yourself.

Solution 2

Try using request module. https://github.com/mikeal/request It's the http module on steroids.

Solution 3

Tried running the code locally, and first there is a capitalization error

var reqGET = https.get(optionsget, function(res) {

reqGet.end();

Second, the web address was not working at the address, nor with secure

var optionsget = {
host : 'api.opencorporates.com', 
port : 80,
path : '/v0.2/companies/search?q=barclays+bank&jurisdiction_code=gb', 
method : 'GET' 
};

Its worth noting that if you wanted to actually use https, you would need to change the require line

var https = require('https');
Share:
10,313
blackmamba
Author by

blackmamba

Updated on June 30, 2022

Comments

  • blackmamba
    blackmamba almost 2 years

    I am trying to access opencorporates.com and using their REST API. I got this code from How to make remote REST call inside Node.js? any CURL?. But it is not fetching any data. I tried wget on the url and it worked perfectly fine.

    app.js

    var https = require('http');
    
    var optionsget = {
    host : 'opencorporates.com', 
    
    port : 8080,
    path : '/v0.2/companies/search?q=barclays+bank&jurisdiction_code=gb', 
    method : 'GET' 
    };
    
    
    console.info('Options prepared:');
    console.info(optionsget);
    console.info('Do the GET call');
    
    var reqGET = https.get(optionsget, function(res) {
    console.log("statusCode: ", res.statusCode);
    console.log("headers: ", res.headers);
    
    
    res.on('data', function(d) {
        console.info('GET result:\n');
        process.stdout.write(d);
        console.info('\n\nCall completed');
      });
    
    });
    
    reqGet.end();
    reqGet.on('error', function(e) {
    console.error(e);
    });