Я пишу относительно новое приложение, и мне было интересно, что мне использовать:
express.json()
или
bodyParser.json()
Могу я предположить, что они делают то же самое.
Хотелось бы просто использовать, express.json()
поскольку он уже встроен.
Ответы:
В более ранних версиях 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 находится здесь для тех, кому интересно, а запрос на вытягивание здесь .
источник
app.use(express.urlencoded({ extended: true }));
?ДА! Верный
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
объекты и методы внутри модуля bodyparser доступны, поскольку они экспортируются с помощью специального объектного модуля.
exports = module.exports = createApplication; exports.json = bodyParser.json
это доступно из экспресс-объекта, просто вызвав
express.json()
источник
Да!! Из-за широко распространенного мнения людей об обратной интеграции body-parser с экспрессом, последняя версия делает именно это. Вы должны быть правы, предполагая, что оба выполняют одни и те же задачи, то есть распознают объект входящего запроса как объекты JSON. Не стесняйтесь использовать любой.
источник
Да!! вы можете использовать их оба. Однако, поскольку
express.json()
он уже встроенexpress
, его разумнее использовать,express.json()
чем расширениеbodyParser.json()
.источник