Dane POST z modułem żądań na Node.JS

137

Ten moduł to „request https://github.com/mikeal/request”

Myślę, że podążam za każdym krokiem, ale brakuje mi argumentu.

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

z drugiej strony mam

echo $_POST['mes'];

I wiem, że php nie jest zły ...

Diego Torres
źródło
Dlaczego nie używać http.requestbezpośrednio? Mam wrażenie, że ciało nie jest mapowane na takie parametry. Spróbujurl: 'http://localhost/test2.php?mes=heydude'
Raynos,

Odpowiedzi:

200

EDYCJA: Powinieneś sprawdzić Needle . Robi to za Ciebie i obsługuje dane wieloczęściowe i wiele więcej.

Zorientowałem się, że brakuje mi nagłówka

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
źródło
6
Pamiętaj o JSON.stringifyswoich danych, jeśli wysyłasz'content-type': 'application/json'
Derek Soike
77

Używając requestdo http POST, możesz dodać parametry w ten sposób:

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

Musiałem opublikować pary klucz-wartość bez formularza i mogłem to łatwo zrobić, jak poniżej:

var request = require('request');

request({
  url: 'http://localhost/test2.php',
  method: 'POST',
  json: {mes: 'heydude'}
}, function(error, response, body){
  console.log(body);
});
Raptor
źródło
36

Jeśli publikujesz treść json, nie używaj tego formparametru. Korzystanie formuczyni tablice język field[0].attribute, field[1].attributeitd. Zamiast używać bodyjak tak.

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
źródło
„jsonDataObj” musi zostać zdefiniowane jako ciąg znaków (JSON.stringify (...)), w przeciwnym razie ulegnie awarii
Doctor
Właściwie mój się zawiesza, jeśli go przeciągniesz. Prawdopodobnie zależy to od konfiguracji serwera odbierającego.
Andrew
1
Dziękuję za odpowiedź. Gdzie mogę znaleźć odpowiedni dokument? Ponieważ wątpiłem w metodę wysyłania postów, ale dokument na Githubie nie wystarczy, aby rozwiązać ten problem.
Sky
16
var request = require('request');
request.post('http://localhost/test2.php', 
    {form:{ mes: "heydude" }}, 
    function(error, response, body){
        console.log(body);
});
aposto
źródło
11
  1. Zainstaluj moduł żądania za pomocą npm install request

  2. W kodzie:

    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
źródło
Oprócz błędów w łańcuchu json, ten załatwił mi sprawę! Zauważ, że sekcja "form" ma przekazany obiekt, więc możesz po prostu zdefiniować wszystko tam jako obiekt na początku i nie wykonywać tych prac przygotowawczych
rgbflawed
0

Muszę pobrać dane z POSTmetody PHPkodu. U mnie zadziałało:

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
źródło
-2

Bardzo polecam axios https://www.npmjs.com/package/axios zainstaluj go z npm lub przędzą

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
źródło