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 ...


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

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

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

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

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

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

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

-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...');
    });
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.