Express.json vs body Parser.json

我正在写一个相对较新的应用程序,想知道我应该使用哪一个:

express.json()

或者

bodyParser.json()

我能假设他们也是这么做的吗。

我想只是使用 express.json(),因为它已经内置。

99297 次浏览

早期版本的 Express 曾经捆绑了许多中间件。Body Parser 是随之而来的中间件之一。当 Express 4.0发布时,他们决定从 Express 中移除捆绑的中间件,使其成为独立的软件包。在安装 body Parser 模块之后,语法从 app.use(express.json())改为 app.use(bodyParser.json())

Body Parser 在4.16.0版本中被添加回 Express,因为人们希望它像以前一样与 Express 捆绑在一起。这意味着,如果您使用的是最新版本,则不必再使用 bodyParser.json()。您可以改用 express.json()

对于感兴趣的用户,4.16.0的发布历史是 给你,而 pull 请求是 给你

是的! 正确

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');


var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');


var app = express();


// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');


app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));


app.use('/', indexRouter);
app.use('/users', usersRouter);


// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});


// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};


// render the error page
res.status(err.status || 500);
res.render('error');
});


module.exports = app;

是的,两者都是一样的。

如果您进入文件 node _ module/Express/lib/Express.js

您可以在模块依赖项下看到正文解析器模块已经导入

/**
* Module dependencies.
*/


var bodyParser = require('body-parser')
//other modules

Body 解析器模块中的对象和方法是可访问的,因为它们是使用特殊对象 module.export 导出的

exports = module.exports = createApplication;
exports.json = bodyParser.json

只需调用

express.json()

太棒了!由于人们普遍认为把 body-parser 重新集成到 Express 中,最新的版本正是这样做的。您应该正确地假设两者执行相同的任务,即将传入的请求对象识别为 JSON 对象。随便用。

太棒了!你可以两个都用。但是,由于 express.json()现在已经内置到 express中,因此使用 express.json()比使用 bodyParser.json()更明智。