Estou escrevendo um aplicativo relativamente novo e queria saber qual devo usar:
express.json()
ou
bodyParser.json()
Posso presumir que eles fazem a mesma coisa.
Eu gostaria de usar apenas express.json()
como já está integrado.
Estou escrevendo um aplicativo relativamente novo e queria saber qual devo usar:
express.json()
ou
bodyParser.json()
Posso presumir que eles fazem a mesma coisa.
Eu gostaria de usar apenas express.json()
como já está integrado.
Respostas:
As versões anteriores do Express costumavam ter muitos middlewares incluídos. bodyParser foi um dos middlewares que surgiu. Quando o Express 4.0 foi lançado, eles decidiram remover o middleware empacotado do Express e torná-los pacotes separados. A sintaxe então mudou de app.use(express.json())
paraapp.use(bodyParser.json())
após a instalação do módulo bodyParser.
bodyParser foi adicionado de volta ao Express na versão 4.16.0, porque as pessoas queriam empacotá-lo com o Express como antes. Isso significa que você não precisa bodyParser.json()
mais usar se estiver com a versão mais recente. Você pode usar em seu express.json()
lugar.
O histórico de lançamento para 4.16.0 está aqui para aqueles que estão interessados, e a solicitação de pull aqui .
app.use(express.urlencoded({ extended: true }));
?
SIM! Corrigir
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;
Sim, ambos são iguais.
se você entrar no arquivo node_module / express / lib / express.js
você pode ver nas dependências do módulo o módulo do analisador de corpo já foi importado
/**
* Module dependencies.
*/
var bodyParser = require('body-parser')
//other modules
os objetos e métodos dentro do módulo bodyparser são acessíveis à medida que são exportados usando o objeto especial module.exports
exports = module.exports = createApplication;
exports.json = bodyParser.json
isso é acessível a partir do objeto expresso apenas chamando
express.json()
Sim!! Devido à opinião generalizada das pessoas em integrar o analisador de corpo de volta ao expresso, a versão mais recente faz exatamente isso. Você deve estar certo ao supor que ambos executam as mesmas tarefas, ou seja, reconhecer o objeto de solicitação recebido como objetos JSON. Sinta-se à vontade para usar qualquer um.