Datos POST con módulo de solicitud en Node.JS


137

Este módulo es 'solicitud https://github.com/mikeal/request

Creo que estoy siguiendo cada paso pero me falta una discusión ...

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

en el otro extremo tengo

echo $_POST['mes'];

Y sé que el php no está mal ...


¿Por qué no usar http.requestdirectamente? Tengo la sensación de que el cuerpo no se asigna a parámetros de cadena de consulta como ese. Probarurl: 'http://localhost/test2.php?mes=heydude'
Raynos

Respuestas:


200

EDITAR: Deberías revisar Needle . Lo hace por usted y admite datos de varias partes, y mucho más.

Me di cuenta de que me faltaba un encabezado

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

66
Recuerde JSON.stringifysus datos si está enviando'content-type': 'application/json'
Derek Soike

78

Cuando se utiliza requestpara una POST http, puede agregar parámetros de esta manera:

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

42

Tuve que publicar pares de valores clave sin forma y podría hacerlo fácilmente como a continuación:

var request = require('request');

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

37

Si está publicando un cuerpo json, no use el formparámetro. El uso formconvertirá las matrices en field[0].attribute, field[1].attributeetc. En su lugar, use de esta bodymanera.

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" debe ser stringified (JSON.stringify (...)) de lo contrario se bloquea
Doctor

En realidad, la mía se cuelga si la cadenas. Probablemente depende de cómo esté configurado el servidor receptor.
Andrew

1
Gracias por tu respuesta. ¿Dónde puedo encontrar el documento para esto? Como dudaba del método de publicación, pero el documento en Github no es suficiente para solucionar este problema.
Cielo

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

11
  1. Instale el módulo de solicitud, utilizando npm install request

  2. En codigo:

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

¡Aparte de los errores en la cadena json, este me sirvió! Tenga en cuenta que la sección "formulario" tiene un objeto pasado, por lo que podría definir todo allí como un objeto para comenzar y no hacer ese trabajo de preparación
rgbflawed

0

Tengo que obtener los datos de un POSTmétodo del PHPcódigo. Lo que funcionó para mí fue:

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

Recomiendo axios https://www.npmjs.com/package/axios instalarlo con npm o hilo

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...');
    });
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.