Дані POST з модулем запиту на Node.JS


137

Цей модуль - "запит https://github.com/mikeal/request

Я думаю, що я стежу за кожним кроком, але пропускаю аргумент ..

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

з іншого кінця у мене є

echo $_POST['mes'];

І я знаю, що php не помиляється ...


Чому б не використовувати http.requestбезпосередньо? У мене таке відчуття, що тіло не відображає такі параметри запитів. Спробуйтеurl: 'http://localhost/test2.php?mes=heydude'
Райнос

Відповіді:


200

EDIT: Ви повинні перевірити Needle . Це робить це для вас і підтримує багаточастинні дані та багато іншого.

Я зрозумів, що мені не вистачає заголовка

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
Запам’ятайте JSON.stringifyсвої дані, якщо ви надсилаєте'content-type': 'application/json'
Дерек Сойке

77

При використанні requestдля http POST ви можете додавати параметри таким чином:

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

42

Мені довелося розміщувати пари ключових значень без форми, і я міг це легко зробити, як нижче:

var request = require('request');

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

36

Якщо ви публікуєте тіло json, не використовуйте formпараметр. Використання formзроблять масиви в field[0].attribute, і field[1].attributeт.д. Замість цього використовувати , bodyяк так.

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" має бути закреслений (JSON.stringify (...)), інакше він вийде з ладу
Доктор

Насправді міна виходить з ладу, якщо ви її закреслили. Напевно, залежить спосіб налаштування приймаючого сервера.
Андрій

1
Дякую за вашу відповідь. Де я можу знайти документа для цього? Оскільки я сумнівався в пості-методі, але док в Github недостатньо, щоб виправити це питання.
Sky

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

11
  1. Встановіть модуль запиту, використовуючи npm install request

  2. У коді:

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

Крім помилок у рядку json, цей зробив для мене трюк! Зауважте, що в розділі "форма" є переданий йому об'єкт, тож ви можете просто визначити все, що там, як об'єкт, для початку, а не робити цю підготовчу роботу
rgbflawed

0

Я повинен отримати дані з POSTметоду PHPкоду. Що для мене працювало:

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

Дуже рекомендую axios https://www.npmjs.com/package/axios встановити його за допомогою npm або пряжі

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...');
    });
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.