Получение данных POST-запроса с помощью Superagent и Express 4

Экспресс -v : 4.13.3

Суперагент -v : 1.4

функция для отправки запроса POST из внешнего интерфейса моего приложения:

search: () => {
    request.post('/api/search')
      .set('Content-Type', 'application/json')
      .send({hello: 'hello w'})
      .end((err, response) => {
        if (err) return console.error(err);

        serveractions.receiveTest(response);
      });
  }

файл моего экспресс-маршрутизатора:

var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');

router.use(bodyParser.urlencoded({extended: false}));

router.post('/api/search', (req, res, next) => {
  console.log(req.body);
  res.json({test: 'post received'});
});

module.exports = router;

Запрос успешно отправляется и принимается маршрутизатором, но req.body всегда пуст, хотя я делаю .send({hello: 'hello w'}) с Superagent. Что мне нужно изменить, чтобы корректно отправлять json-объект и получать его в моем роутере?


person httpNick    schedule 26.11.2015    source источник


Ответы (1)


Я понял ответ:

Я изменил файл маршрутизатора на:

var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');

router.use( bodyParser.json() );
router.use(bodyParser.urlencoded({
  extended: true
}));

router.post('/api/search', (req, res, next) => {
  console.log(req.body);
  res.json({test: 'post received'});
});

module.exports = router;

И мой метод запроса:

searchRequest : (data) => {
  request
    .post('/api/search')
    .send({ searchTerm : data })
    .end((err, res) => {
      if (err) console.log(err);
      console.log(res);
    })
}
person httpNick    schedule 28.11.2015