Я пишу відносно новий додаток і міркував, який із них я повинен використовувати:
express.json()
або
bodyParser.json()
Чи можу я припустити, що вони роблять те саме.
Я хотів би просто використовувати, express.json()
як це вже вбудовано.
Я пишу відносно новий додаток і міркував, який із них я повинен використовувати:
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
exports = module.exports = createApplication;
exports.json = bodyParser.json
це доступно з експрес-об'єкта лише за допомогою виклику
express.json()
Так!! Завдяки широко поширеній думці людей про інтеграцію парсеру для тіла назад із експрессом, останній випуск робить саме це. Ви повинні мати рацію припустити, що обидва вони виконують однакові завдання, тобто розпізнавати об’єкт вхідного запиту як об’єкти JSON. Не соромтеся використовувати будь-який.