54

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?

1 Answer 1

48

Comparing what headers curl and node sent, i found that adding:

headers: {
    accept: '*/*'
}

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) after req.end().


Quick tip: You can use https.get(), instead of https.request(). It will set method to GET, and calls req.end() for you.

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.