Dati POST con modulo di richiesta su Node.JS


137

Questo modulo è 'richiesta https://github.com/mikeal/request

Penso di seguire ogni passo ma mi manca un argomento ..

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

dall'altra parte ho

echo $_POST['mes'];

E so che il php non è sbagliato ...


Perché non usare http.requestdirettamente? Ho la sensazione che il corpo non si associ a parametri di querystring come quello. Provaurl: 'http://localhost/test2.php?mes=heydude'
Raynos,

Risposte:


200

EDIT: dovresti dare un'occhiata a Needle . Lo fa per te e supporta dati multipart e molto altro.

Ho capito che mi mancava un colpo di testa

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
Ricorda i JSON.stringifytuoi dati se stai inviando'content-type': 'application/json'
Derek Soike

78

Quando si utilizza requestper un POST http è possibile aggiungere parametri in questo modo:

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

42

Ho dovuto pubblicare coppie di valori-chiave senza modulo e ho potuto farlo facilmente come di seguito:

var request = require('request');

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

37

Se stai pubblicando un corpo json, non utilizzare il formparametro. L'utilizzo formtrasformerà gli array in field[0].attribute, field[1].attributeecc. Invece, utilizzali in questo bodymodo.

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" deve essere stringa (JSON.stringify (...)) altrimenti si blocca
Dottore

In realtà il mio si arresta in modo anomalo se lo stringi. Probabilmente dipende da come è configurato il server ricevente.
Andrew,

1
Grazie per la tua risposta. Dove posso trovare il documento per questo? Dal momento che ho dubitato del metodo post, ma il documento in Github non è sufficiente a risolvere questo problema.
Sky

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

11
  1. Installa il modulo di richiesta, usando npm install request

  2. Nel codice:

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

A parte gli errori nella stringa JSON, questo ha fatto il trucco per me! Nota che la sezione "form" ha un oggetto passato ad esso, quindi potresti semplicemente definire tutto come oggetto per cominciare e non fare quel lavoro di preparazione
rgbflawed

0

Devo ottenere i dati da un POSTmetodo del PHPcodice. Ciò che ha funzionato per me è stato:

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

Consiglio vivamente axios https://www.npmjs.com/package/axios installarlo con npm o filo

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...');
    });
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.