Express -v:4.13.3
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;
路由器成功发送和接收请求,但即使我正在使用Superagent进行.send({hello: 'hello w'})
,req.body仍然是空的。为了正确发送json对象并在路由器中接收它,我需要更改什么?
答案 0 :(得分: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);
})
}