如何在 Express 路由器中使用 body-parser?

新手上路,请多包涵

我有一个具有对象的 post api,但我无法在控制台中打印它抛出的 undefined 我以为我缺少 body-parser 但在添加 body parser 之后我看到错误 body-parser deprecated bodyParser: use individual json/urlencoded middlewares 任何帮助将不胜感激。

路由.js

 var express = require('express');
var bodyParser = require('body-parser');
var Diagram = require('./api/diagram/diagram.controller');
var router = express.Router();
router.post('/saveUpdateDiagram',bodyParser,function(req,res){
    console.log(req.body);
});

应用程序.js

 var express = require('express');
var path = require('path');
var app = express();
var bodyParser = require('body-parser');
var router = express.Router();
var route = require('./server/routes').router;
var mongoose = require('mongoose');
mongoose.connection.on('connected', function() {
    console.log('MongoDB connected ');
});

app.use(express.static(path.join(__dirname, 'public')));
app.use('/', route);
app.use(bodyParser.urlencoded({
    extended: false
}))
app.use(bodyParser.json())

app.listen(8760, function() {
    console.log('I am listening 8760...');
});

原文由 hussain 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 379
2 个回答

您在 app.js 中使用 body-parser 没问题。它是中间件,并加载了 app.use 以便它将应用于每个传入请求。

您可以在 routes.js 中删除它,使其看起来像这样:`

 var express = require('express');
var Diagram = require('./api/diagram/diagram.controller');
var router = express.Router();
router.post('/saveUpdateDiagram', function(req,res){
    console.log(req.body);
});

` 另外,尝试替换:

 app.use(bodyParser.urlencoded({
    extended: false
}))

和:

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

原文由 WindUpDurb 发布,翻译遵循 CC BY-SA 3.0 许可协议

您在 app.js 中使用 body-parser 没问题。它是中间件,它加载了 app.use 但 问题是你使用 app.use(‘/’, route); 的位置它应该放在 app.use(bodyParser.urlencoded({ extended: true })); 下面

原文由 Prajith P 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏