[英]How to use body-parser in express router?
我有一個 post api,它有對象,但我無法在控制台中打印它拋出的未定義我以為我缺少正文解析器但在添加正文解析器后我看到錯誤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...');
});
您在 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}));
這意味着從bodyParser()
起,不推薦使用bodyParser()
構造函數。
app.use(bodyParser()); //Now deprecated You now need to call the methods separately
app.use(bodyParser.urlencoded());
app.use(bodyParser.json()); //And so on.
如果您仍然收到 urlencoded 警告,則需要使用
app.use(bodyParser.urlencoded({
extended: true
}))
擴展的配置對象鍵現在需要顯式傳遞,因為它現在沒有默認值,如此處所述。
您在 app.js 中使用 body-parser 很好。 它是中間件,它加載了 app.use 但問題是你使用 app.use('/', route); 的位置。 它應該放在app.use(bodyParser.urlencoded({ extended: true })); 下面。
簡單的方法,使用以下命令安裝 body-parser
npm install -g body-parser
然后在您的應用程序中使用它
var bodyParser = require("body-parser");
然后您可以在您的應用程序中使用它添加以下代碼行
app.use(bodyParser.urlencoded({extended: true}));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.