J'essaie d'écrire une application NodeJS qui communiquera avec l'API OpenShift REST) à l'aide de la méthode de requête du package https. Voici le 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);
});
Mais cela me donne une erreur (le code d’état 500 est renvoyé). Quand j'ai fait la même chose en utilisant curl sur la ligne de commande,
curl -k -X GET https://openshift.redhat.com/broker/rest/api
Je reçois la réponse correcte du serveur.
Y at-il quelque chose de mal dans le code?
En comparant les en-têtes curl et les nœuds envoyés, j'ai trouvé que l'ajout de:
headers: {
accept: '*/*'
}
à options
le corrige.
Pour voir quels en-têtes sont envoyés par curl, vous pouvez utiliser l'argument -v
.curl -vIX GET https://openshift.redhat.com/broker/rest/api
Dans le noeud, juste console.log(req._headers)
après req.end()
.
Astuce: vous pouvez utiliser https.get()
au lieu de https.request()
. Il définira la méthode sur GET
et appelle req.end()
pour vous.