Estoy escribiendo una aplicación relativamente nueva y me preguntaba cuál debería usar:
express.json()
o
bodyParser.json()
¿Puedo asumir que ellos hacen lo mismo?
Me gustaría usarlo express.json()
porque ya está integrado.
Estoy escribiendo una aplicación relativamente nueva y me preguntaba cuál debería usar:
express.json()
o
bodyParser.json()
¿Puedo asumir que ellos hacen lo mismo?
Me gustaría usarlo express.json()
porque ya está integrado.
Respuestas:
Las versiones anteriores de Express solían tener una gran cantidad de middleware incluido. bodyParser fue uno de los middlewares que vino. Cuando se lanzó Express 4.0, decidieron eliminar el middleware incluido de Express y convertirlos en paquetes separados. La sintaxis luego cambió de app.use(express.json())
a app.use(bodyParser.json())
después de instalar el módulo bodyParser.
bodyParser se volvió a agregar a Express en la versión 4.16.0, porque la gente quería que se incluyera con Express como antes. Eso significa que no tiene que usar bodyParser.json()
más si está en la última versión. Puede usar express.json()
en su lugar.
El historial de versiones de 4.16.0 está aquí para aquellos que estén interesados, y la solicitud de extracción aquí .
app.use(express.urlencoded({ extended: true }));
entonces?
¡SI! Correcto
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;
Sí, ambos son iguales.
si entra en el archivo node_module / express / lib / express.js
puede ver en las dependencias del módulo, el módulo del analizador corporal ya está importado
/**
* Module dependencies.
*/
var bodyParser = require('body-parser')
//other modules
los objetos y métodos dentro del módulo bodyparser son accesibles ya que se exportan utilizando el módulo de objetos especiales.
exports = module.exports = createApplication;
exports.json = bodyParser.json
esto es accesible desde el objeto express simplemente llamando
express.json()
¡¡Si!! Debido a la opinión generalizada de la gente de volver a integrar el analizador corporal con el expreso, la última versión hace exactamente esto. Debería tener razón al asumir que ambos realizan las mismas tareas, es decir, reconocer el objeto de solicitud entrante como objetos JSON. Siéntase libre de usar cualquiera de los dos.