envoyer Content-Type: application / json post avec node.js

Comment pouvons-nous créer 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/"}' 

Le module de demande de Mikeal 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 l’indique la documentation officielle :

body – corps d’entité pour les requêtes PATCH, POST et PUT. Doit être un tampon, une chaîne ou un readStream. Si json est vrai, le corps doit être un object sérialisable JSON.

Lors de l’envoi de JSON, il 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 à une erreur json incorrecte de l’API.

En outre, encore une autre variante pour créer la requête POST requirejse avec la charge utile JSON.

 request.post({ uri: 'https://www.googleapis.com/urlshortener/v1/url', headers: {'Content-Type': 'application/json'}, body: JSON.ssortingngify({"longUrl": "http://www.google.com/"}) });