POST-Daten mit Anforderungsmodul auf Node.JS

136

Dieses Modul ist 'Anfrage https://github.com/mikeal/request

Ich denke, ich verfolge jeden Schritt, aber mir fehlt ein Argument.

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

am anderen ende habe ich

echo $_POST['mes'];

Und ich weiß, dass der PHP nicht falsch ist ...

Diego Torres
quelle
Warum nicht http.requestdirekt verwenden? Ich habe das Gefühl, dass der Körper solchen Querystring-Parametern nicht zugeordnet ist. Versuchen Sieurl: 'http://localhost/test2.php?mes=heydude'
Raynos

Antworten:

199

EDIT: Sie sollten Needle überprüfen . Es erledigt dies für Sie und unterstützt mehrteilige Daten und vieles mehr.

Ich fand heraus, dass mir ein Header fehlte

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
quelle
6
Denken Sie an JSON.stringifyIhre Daten, wenn Sie senden'content-type': 'application/json'
Derek Soike
77

Bei Verwendung requestfür einen http-POST können Sie folgende Parameter hinzufügen:

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

Ich musste Schlüsselwertpaare ohne Formular posten und konnte dies einfach wie folgt tun:

var request = require('request');

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

Wenn Sie einen JSON-Body veröffentlichen, verwenden Sie den formParameter nicht. Mit formwerden die Arrays in machen field[0].attribute, field[1].attributeusw. Stattdessen benutzen bodywie so.

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
quelle
"jsonDataObj" muss stringifiziert werden (JSON.stringify (...)), sonst stürzt es ab
Doctor
Eigentlich stürzt meine ab, wenn Sie es stringifizieren. Dies hängt wahrscheinlich davon ab, wie der empfangende Server eingerichtet ist.
Andrew
1
Danke für deine Antwort. Wo finde ich das Dokument dafür? Da ich an der Post-Methode gezweifelt habe, reicht das Dokument in Github nicht aus, um dieses Problem zu beheben.
Himmel
16
var request = require('request');
request.post('http://localhost/test2.php', 
    {form:{ mes: "heydude" }}, 
    function(error, response, body){
        console.log(body);
});
Aposto
quelle
11
  1. Installieren Sie das Anforderungsmodul mit npm install request

  2. In 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.
quelle
Abgesehen von den Fehlern in der JSON-Zeichenfolge hat diese den Trick für mich getan! Beachten Sie, dass dem Abschnitt "Formular" ein Objekt übergeben wurde, sodass Sie zunächst alles darin als Objekt definieren und diese Vorbereitungsarbeit nicht
ausführen können
0

Ich muss die Daten von einer POSTMethode des PHPCodes erhalten. Was für mich funktioniert hat war:

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

Ich empfehle Axios https://www.npmjs.com/package/axios, es mit npm oder Garn zu installieren

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
quelle