Données POST avec module de requête sur Node.JS

137

Ce module est 'demande https://github.com/mikeal/request

Je pense que je suis chaque étape mais je manque un argument.

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

à l'autre bout j'ai

echo $_POST['mes'];

Et je sais que le php n'est pas faux ...

Diego Torres
la source
Pourquoi ne pas utiliser http.requestdirectement? J'ai le sentiment que le corps ne correspond pas à des paramètres de chaîne de requête comme ça. Essayerurl: 'http://localhost/test2.php?mes=heydude'
Raynos

Réponses:

200

EDIT: Vous devriez vérifier Needle . Il le fait pour vous et prend en charge les données en plusieurs parties, et bien plus encore.

J'ai compris qu'il me manquait 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);
});
Diego Torres
la source
6
N'oubliez pas JSON.stringifyvos données si vous envoyez'content-type': 'application/json'
Derek Soike
78

Lors de l'utilisation requestpour un HTTP POST, vous pouvez ajouter des paramètres de cette façon:

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

J'ai dû publier des paires valeur / clé sans formulaire et je pourrais 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);
});
Raptor
la source
37

Si vous publiez un corps json, n'utilisez pas le formparamètre. Utiliser formfera des tableaux en field[0].attribute, field[1].attributeetc. Utilisez plutôt bodycomme ça.

var jsonDataObj = {'mes': 'hey dude', 'yo': ['im here', 'and here']};
request.post({
    url: 'https://api.site.com',
    body: jsonDataObj,
    json: true
  }, function(error, response, body){
  console.log(body);
});
Ricky
la source
"jsonDataObj" doit être stringifié (JSON.stringify (...)) sinon il plante
Docteur
En fait, le mien plante si vous le stringifiez. Cela dépend probablement de la configuration du serveur de réception.
Andrew
1
Merci pour votre réponse. Où puis-je trouver la documentation pour cela? Depuis que j'ai douté de la méthode de publication, mais la documentation dans Github ne suffit pas à résoudre ce problème.
Sky
16
var request = require('request');
request.post('http://localhost/test2.php', 
    {form:{ mes: "heydude" }}, 
    function(error, response, body){
        console.log(body);
});
aposto
la source
11
  1. Installer le module de demande, en utilisant npm install request

  2. Dans du code:

    var request = require('request');
    var data = '{ "request" : "msg", "data:" {"key1":' + Var1 + ', "key2":' + Var2 + '}}';
    var json_obj = JSON.parse(data);
    request.post({
        headers: {'content-type': 'application/json'},
        url: 'http://localhost/PhpPage.php',
        form: json_obj
    }, function(error, response, body){
      console.log(body)
    });
Aniket B
la source
Mis à part les erreurs dans la chaîne json, celle-ci a fait l'affaire pour moi! Notez que la section "formulaire" a un objet qui lui est passé, vous pouvez donc simplement définir tout ce qui s'y trouve comme un objet pour commencer et ne pas faire ce travail de préparation
rgbflawed
0

Je dois obtenir les données d'une POSTméthode du PHPcode. Ce qui a fonctionné pour moi était:

const querystring = require('querystring');
const request = require('request');

const link = 'http://your-website-link.com/sample.php';
let params = { 'A': 'a', 'B': 'b' };

params = querystring.stringify(params); // changing into querystring eg 'A=a&B=b'

request.post({
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, // important to interect with PHP
  url: link,
  body: params,
}, function(error, response, body){
  console.log(body);
});
Rahmat Ali
la source
-2

Je recommande fortement axios https://www.npmjs.com/package/axios de l' installer avec npm ou yarn

const axios = require('axios');

axios.get('http://your_server/your_script.php')
    .then( response => {
    console.log('Respuesta', response.data);
    })
    .catch( response => {
        console.log('Error', response);
    })
    .finally( () => {
        console.log('Finalmente...');
    });
Oscar Perez
la source