151 votes

Envoyer des données POST avec le module de requête sur Node.JS

Ce module se trouve sur https://github.com/mikeal/request

Je pense que je suis en train de suivre chaque étape mais il me manque un argument..

var request = require('request');
request.post({
        url: 'http://localhost/test2.php',
         body: "mes=heydude"
         }, function(error, response, body){
            console.log(body);
    });

de l'autre côté j'ai

echo $_POST['mes'];

Et je sais que le php n'est pas en cause...

0 votes

Pourquoi ne pas utiliser http.request directement? J'ai l'impression que le corps ne se mappe pas aux paramètres de chaîne de requête de cette manière. Essayez url: 'http://localhost/test2.php?mes=heydude'

0 votes

Dans Node.js 18, l'API fetch est disponible par défaut dans la portée globale stackoverflow.com/questions/6158933/…

216voto

Diego Torres Points 1375

EDIT: Vous devriez consulter Needle. Cela le fait pour vous et prend en charge les données multipart, et bien plus encore.

J'ai réalisé que je manquais d'un en-tête

var request = require('request');
request.post({
  headers: {'content-type' : 'application/x-www-form-urlencoded'},
  url:     'http://localhost/test2.php',
  body:    "mes=heydude"
}, function(error, response, body){
  console.log(body);
});

9 votes

N'oubliez pas de JSON.stringify vos données si vous envoyez 'content-type': 'application/json'

82voto

TinyTimZamboni Points 940

Lors de l'utilisation de request pour une requête POST http, vous pouvez ajouter des paramètres de cette manière :

var request = require('request');
request.post({
  url:     'http://localhost/test2.php',
  form:    { mes: "heydude" }
}, function(error, response, body){
  console.log(body);
});

52voto

Raptor Points 1996

J'ai dû poster des paires clé-valeur sans formulaire et j'ai pu le faire facilement comme ci-dessous :

var request = require('request');

request({
  url: 'http://localhost/test2.php',
  method: 'POST',
  json: {mes: 'heydude'}
}, function(error, response, body){
  console.log(body);
});

42voto

Ricky Points 613

Si vous envoyez un corps json, ne pas utiliser le paramètre form. Utiliser form va transformer les tableaux en field[0].attribut, field[1].attribut, etc. Au lieu de cela, utilisez body comme ceci.

var jsonDataObj = {'mes': 'salut mec', 'yo': ['je suis ici', 'et ici']};
request.post({
    url: 'https://api.site.com',
    body: jsonDataObj,
    json: true
  }, function(error, response, body){
  console.log(body);
});

0 votes

"jsonDataObj" doit être transformé en chaîne de caractères (JSON.stringify(...)) sinon cela provoque un crash

0 votes

En réalité, le mien plante si vous le convertissez en chaîne de caractères. Cela dépend probablement de la configuration du serveur de réception.

1 votes

Merci pour votre réponse. Où puis-je trouver la documentation à ce sujet? Comme j'avais des doutes sur la méthode POST, mais la documentation dans Github n'est pas suffisante pour résoudre ce problème.

16voto

aposto Points 98
var demande = require('request');
demande.post('http://localhost/test2.php', 
    {form:{ mes: "heydude" }}, 
    function(error, response, body){
        console.log(body);
});

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