Comment pouvons-nous faire une requête HTTP comme celle-ci dans NodeJS? Exemple ou module apprécié.
curl https://www.googleapis.com/urlshortener/v1/url \
-H 'Content-Type: application/json' \
-d '{"longUrl": "http://www.google.com/"}'
La requête de Mikeal module peut le faire facilement:
var request = require('request');
var options = {
uri: 'https://www.googleapis.com/urlshortener/v1/url',
method: 'POST',
json: {
"longUrl": "http://www.google.com/"
}
};
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body.id) // Print the shortened url.
}
});
Exemple simple
var request = require('request');
//Custom Header pass
var headersOpt = {
"content-type": "application/json",
};
request(
{
method:'post',
url:'https://www.googleapis.com/urlshortener/v1/url',
form: {name:'hello',age:25},
headers: headersOpt,
json: true,
}, function (error, response, body) {
//Print the Response
console.log(body);
});
Comme le documentation officielle dit:
body - body pour les requêtes PATCH, POST et PUT. Doit être un tampon, une chaîne ou ReadStream. Si json est true, alors body doit être un objet sérialisable JSON.
Lors de l'envoi de JSON, il vous suffit de le mettre dans le corps de l'option.
var options = {
uri: 'https://myurl.com',
method: 'POST',
json: true,
body: {'my_date' : 'json'}
}
request(options, myCallback)
Pour une raison quelconque, cela a fonctionné pour moi aujourd'hui. Toutes les autres variantes ont abouti dans bad json error de l’API.
En outre, encore une autre variante pour créer la demande requise POST avec la charge JSON.
request.post({
uri: 'https://www.googleapis.com/urlshortener/v1/url',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({"longUrl": "http://www.google.com/"})
});