Access rest api using nodejs
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');
blackmamba
Updated on June 30, 2022Comments
-
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); });