2015-09-11 5 views
0

Я пытаюсь передать данные из одного экземпляра node.js в другой.Node.JS Экспресс-передача данных

Я использую экспресс и запрос для передачи этих данных, я только начал этот конкретный проект, и это не совсем так, как id, как признаться.

Это мое основное приложение, которое получает почтовый запрос.

var express = require('express'); 
var app = express(); 
app.get('/', function (req, res) { 
    res.send('Hello World!'); 
}); 

app.post('/', function (req, res) { 
    res.send('POST request to the homepage'); 
console.log('POST REQUEST' + res + req); 
}); 

var server = app.listen(3004, function() { 
    var host = server.address().address; 
    var port = server.address().port; 

    console.log('Example app listening at http://%s:%s', host, port); 
}); 

Вот мой экземпляр узла 2, который выступает в качестве клиента.

var request = require('request'); 

request.post(
    'http://192.168.1.225:3004', 
    { form: { key: 'notyourmother' } }, 
    function (error, response, body) { 
     if (!error && response.statusCode == 200) { 
      console.log(body) 
     } 
    } 
); 

При выполнении этого, это ответ я получаю, позже, когда он работает он будет назначен переменной в виде строки. В этот момент он не будет даже дать мне данные, которые я послал через пост, я использовал запрос и ответ увидеть, какие трубы данные текли на console.log

enter image description here

Моя конечная цель должна быть в состоянии отправлять команды на сервер с помощью http post и request.

Если у кого-либо есть какие-либо советы, будем признательны.

Спасибо!

+0

Что вы подразумеваете под «это не даст мне данные». Как вы его получите? –

+0

Возможно, вам понадобится промежуточное ПО экспресс-анализатора. – brandonscript

+0

Является ли это правильным способом передачи данных? Кажется, им приходится делать много ненужных вещей, чтобы передать простую строку по узлу. –

ответ

0

Вы делаете это правильно, вы в основном получаете свои данные в req (который является объектом запроса). В сообщении данные находятся в теле как req.body.

В принципе, если вы измените свою линию res.send('POST request to the homepage'); на res.send('POST request to the homepage' + req.body);, вы также увидите свою строку в своем клиенте.

Как правило, вы хотите иметь тело-анализатор (https://github.com/expressjs/body-parser), который вы могли бы интегрировать в ваше приложение следующим образом

var express = require('express'); 
var bodyParser = require('body-parser') 
var app = express(); 
app.use(bodyParser.json()); 

app.get('/', function (req, res) { 
    res.send('Hello World!'); 
}); 

app.post('/', function (req, res) { 
    res.send('POST request to the homepage'); 
console.log('POST REQUEST' + res + req); 
}); 

var server = app.listen(3004, function() { 
    var host = server.address().address; 
    var port = server.address().port; 

    console.log('Example app listening at http://%s:%s', host, port); 
}); 

Помните, что если вы публикуете JSON, что клиент должен послать заголовок content-type: application/json к сервер.

+0

DevAlien, Спасибо за ваш ответ. Отправил меня немного больше на ходу. По-прежнему возникает проблема с появлением запроса, как и предполагалось. С кодом + req.body и модулем я получаю тот же ответ, что и раньше, в потоке. –

+0

Прохладный, не забудьте проголосовать или задать ответ как правильный, если он есть. Это хорошо и для других. – DevAlien

+0

Попытка выяснить, как поделиться своим кодом с вами снова, я получаю «POST REQUEST [object Object] [object Object]» с консоли сервера все еще –

Смежные вопросы