Risposte:
Le versioni precedenti di Express avevano un sacco di middleware in bundle con esso. bodyParser è stato uno dei middleware che è venuto. Quando è stato rilasciato Express 4.0, hanno deciso di rimuovere il middleware in bundle da Express e renderli invece pacchetti separati. La sintassi è quindi cambiata da app.use(express.json())
a app.use(bodyParser.json())
dopo l'installazione del modulo bodyParser.
bodyParser è stato aggiunto di nuovo a Express nella versione 4.16.0, perché le persone lo volevano in bundle con Express come prima. Ciò significa che non devi bodyParser.json()
più usarlo se sei sull'ultima versione. Puoi usare express.json()
invece.
La cronologia del rilascio è per 4.16.0 è qui per coloro che sono interessati, e la richiesta pull qui .
app.use(express.urlencoded({ extended: true }));
allora?
SÌ! Corretta
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ì, sono entrambi uguali.
se vai nel file node_module / express / lib / express.js
puoi vedere sotto le dipendenze del modulo il modulo parser del corpo è già importato
/**
* Module dependencies.
*/
var bodyParser = require('body-parser')
//other modules
gli oggetti ei metodi all'interno del modulo bodyparser sono accessibili in quanto vengono esportati utilizzando lo speciale oggetto module.exports
exports = module.exports = createApplication;
exports.json = bodyParser.json
questo è accessibile dall'oggetto express semplicemente chiamando
express.json()
Sì!! A causa dell'opinione diffusa delle persone di integrare il body-parser con l'express, l'ultima versione fa esattamente questo. Dovresti avere ragione a presumere che entrambi eseguano le stesse attività, ovvero riconoscere l'oggetto richiesta in arrivo come oggetti JSON. Sentiti libero di usarli.