2015-11-26 63 views
2

快递-v:4.13.3接收POST请求数据4

的SuperAgent -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; 

的请求成功被发送和接收b y路由器,但req.body总是空的,即使我正在与Superagent做.send({hello: 'hello w'})。我需要更改什么才能正确发送json对象并在我的路由器中接收它?

回答

6

我想出了答案:

我改变了我的路由器文件:

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