我已经创建了一个非常基本的快递js应用程序。设置路线和其他事情后我做了app.use('/api/', require('./api/api.js'));
api.js看起来像这样:
var express = require('express');
var router = express.Router();
router.post('/', function(req, res){
res.end(req.body);
});
module.exports = router;
我正在使用Postman chrome扩展程序发布到此路线。响应为空{}
。
问题是:只要我在app.js
body-parser
中间件集中,我需要在api.js
中再次设置它吗?如果不是为什么我的回答是空的?
在app.js
中,body-parser设置如下:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
答案 0 :(得分:1)
试试这个
<强> app.js 强>
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
var api = require('./api');
app.use('/api', api);
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
<强> api.js 强>
var express = require('express');
var router = express.Router();
router.post('/', function (req, res) {
res.send((req.body);
});
module.exports = router
然后,在你的PostMan请求中,例如:
答案 1 :(得分:0)
您在/api/
中使用了app.use('/api/', require('./api/api.js'));
来使用该路由,而在您使用router.post('/', ...
的路由中。如果您删除/api/
中的尾部正斜杠,则可能会起作用。