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?
To create an HTTPS server, you need two things: an SSL certificate, and built-in https Node.
Server (Node.js)var server = http. createServer(function (request, response) { var queryData = url. parse(request. url, true).
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With