I am trying to write a NodeJS app which will talk to the OpenShift REST API using the request method in the https package. Here is the code:
var https = require('https');
var options = {
host: 'openshift.redhat.com',
port: 443,
path: '/broker/rest/api',
method: 'GET'
};
var req = https.request(options, function(res) {
console.log(res.statusCode);
res.on('data', function(d) {
process.stdout.write(d);
});
});
req.end();
req.on('error', function(e) {
console.error(e);
});
But this is giving me an error (status code 500 is returned). When I did the same thing using curl on the command line,
curl -k -X GET https://openshift.redhat.com/broker/rest/api
I am getting the correct response from the server.
Is there anything wrong in the code?
Comparing what headers curl and node sent, i found that adding:
to
options
fixed it.To see which headers curl sends, you can use the
-v
argument.curl -vIX GET https://openshift.redhat.com/broker/rest/api
In node, just
console.log(req._headers)
afterreq.end()
.Quick tip: You can use
https.get()
, instead ofhttps.request()
. It will set method toGET
, and callsreq.end()
for you.