119 votes

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

Comment faire une requête HTTP comme celle-ci en 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/"}'

291voto

Josh Smith Points 4420

La 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.
  }
});

2 votes

Merci pour cette réponse utile. En fin de compte, je réalise que l'option est bien documentée. Mais perdue au milieu de plein d'autres...

1 votes

Cela n'a pas fonctionné pour moi jusqu'à ce que j'ajoute l'option headers: {'content-type' : 'application/json'}, option.

0 votes

- le module "request" de NodeJs est déprécié. - Comment pouvons-nous faire cela en utilisant le module 'http' ? Merci.

13voto

Poonam Gupta Points 410

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);  
});

11voto

JiN Points 131

Comme le documentation officielle dit :

body - corps de l'entité pour les demandes PATCH, POST et PUT. Doit être un Buffer, String ou ReadStream. Si json est vrai, alors body doit être un objet sérialisable JSON.

Pour envoyer du 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)

4 votes

C'est moi ou sa documentation est nulle ?

4voto

Paul T. Rawkeen Points 1500

Pour une raison quelconque, seule celle-ci a fonctionné pour moi aujourd'hui. Toutes les autres variantes se sont retrouvées dans mauvais json erreur de l'API.

En outre, il existe une autre variante pour créer une requête POST requise avec des données utiles JSON.

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

1voto

ehrencrona Points 2111

Depuis le request que d'autres réponses utilisent a été déprécié, puis-je suggérer de passer au module node-fetch :

const fetch = require("node-fetch")

const url = "https://www.googleapis.com/urlshortener/v1/url"
const payload = { longUrl: "http://www.google.com/" }

const res = await fetch(url, {
  method: "post",
  body: JSON.stringify(payload),
  headers: { "Content-Type": "application/json" },
})

const { id } = await res.json()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X