Data POST dengan modul permintaan pada Node.JS

138

Modul ini adalah 'request https://github.com/mikeal/request

Saya pikir saya mengikuti setiap langkah tetapi saya melewatkan satu argumen ..

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

di sisi lain saya punya

echo $_POST['mes'];

Dan saya tahu php itu tidak salah ...

Diego Torres
sumber
Mengapa tidak digunakan http.requestsecara langsung? Saya merasa tubuh tidak memetakan ke parameter querystring seperti itu. Cobaurl: 'http://localhost/test2.php?mes=heydude'
Raynos

Jawaban:

202

EDIT: Anda harus memeriksa Needle . Ini melakukan ini untuk Anda dan mendukung data multi bagian, dan banyak lagi.

Saya menemukan bahwa saya kehilangan sebuah header

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
sumber
6
Ingatlah untuk JSON.stringifydata Anda jika Anda mengirim'content-type': 'application/json'
Derek Soike
79

Saat menggunakan requestuntuk http POST Anda dapat menambahkan parameter dengan cara ini:

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

Saya harus memposting pasangan nilai kunci tanpa formulir dan saya dapat melakukannya dengan mudah seperti di bawah ini:

var request = require('request');

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

Jika Anda memposting tubuh json, jangan gunakan formparameter. Menggunakan formakan membuat array menjadi field[0].attribute, field[1].attributedll. Sebagai gantinya, gunakan bodyseperti itu.

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
sumber
"jsonDataObj" harus dirangkai (JSON.stringify (...)) jika tidak maka crash
Dokter
Sebenarnya milik saya crash jika Anda merangkainya. Ini mungkin tergantung bagaimana server penerima disiapkan.
Andrew
1
Terima kasih atas jawaban anda. Di mana saya dapat menemukan dokumen untuk ini? Karena saya meragukan metode posting, tetapi dokumen di Github tidak cukup untuk memperbaiki masalah ini.
Langit
16
var request = require('request');
request.post('http://localhost/test2.php', 
    {form:{ mes: "heydude" }}, 
    function(error, response, body){
        console.log(body);
});
aposto
sumber
12
  1. Instal modul permintaan, menggunakan npm install request

  2. Dalam kode:

    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
sumber
Selain kesalahan dalam string json, yang ini melakukan trik untuk saya! Perhatikan bahwa bagian "formulir" memiliki objek yang diteruskan ke sana, jadi Anda bisa mendefinisikan semua yang ada di sana sebagai objek untuk memulai dan tidak melakukan pekerjaan persiapan itu
rgbflawed
0

Saya harus mendapatkan data dari POSTmetode PHPkode. Apa yang berhasil bagi saya adalah:

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
sumber
-2

Saya sangat merekomendasikan axios https://www.npmjs.com/package/axios menginstalnya dengan npm atau benang

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
sumber