Express.json vs bodyParser.json
Я пишу относительно новое приложение и задаюсь вопросом, что я должен использовать:
express.json()
или
bodyParser.json()
Могу ли я предположить, что они делают то же самое.
Я хотел бы просто использовать express.json()
, поскольку он уже встроен.
Ответы
Ответ 1
В более ранних версиях Express использовалось много промежуточного программного обеспечения в комплекте с ним. bodyParser был одним из посредников, которые пришли. Когда Express 4.0 был выпущен, они решили удалить связанное промежуточное ПО из Express и вместо этого сделать их отдельными пакетами. Затем синтаксис изменился с app.use(express.json())
на app.use(bodyParser.json())
после установки модуля bodyParser.
bodyParser был добавлен обратно в Express в версии 4.16.0, потому что люди хотели, чтобы он был связан с Express как раньше. Это означает, что вам больше не нужно использовать bodyParser.json()
, если вы находитесь в последней версии. Вместо этого вы можете использовать express.json()
.
История релизов для 4.16.0 здесь для тех, кто интересуется, и запрос на растяжение здесь.
Ответ 2
ДА! Правильно
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;
Ответ 3
Да, оба одинаковы.
если вы идете в файл node_module/express/lib/express.js
вы можете увидеть под модулем зависимостей тела модуля уже импортирован модуль
/**
* Module dependencies.
*/
var bodyParser = require('body-parser')
//other modules
объекты и методы внутри модуля bodyparser доступны, так как они экспортируются с использованием специального объекта module.exports
exports = module.exports = createApplication;
exports.json = bodyParser.json
это доступно из экспресс-объекта, просто вызвав
express.json()