Ich schreibe eine relativ neue App und habe mich gefragt, welche ich verwenden soll:
express.json()
oder
bodyParser.json()
Kann ich davon ausgehen, dass sie dasselbe tun?
Ich möchte nur verwenden, express.json()wie es bereits eingebaut ist.
Ich schreibe eine relativ neue App und habe mich gefragt, welche ich verwenden soll:
express.json()
oder
bodyParser.json()
Kann ich davon ausgehen, dass sie dasselbe tun?
Ich möchte nur verwenden, express.json()wie es bereits eingebaut ist.
Antworten:
In früheren Express-Versionen war früher viel Middleware enthalten. bodyParser war einer der Middlewares, die es kamen. Als Express 4.0 veröffentlicht wurde, beschlossen sie, die mitgelieferte Middleware aus Express zu entfernen und stattdessen separate Pakete zu erstellen. Die Syntax wurde nach der Installation des bodyParser-Moduls von app.use(express.json())auf app.use(bodyParser.json())geändert.
bodyParser wurde in Version 4.16.0 wieder zu Express hinzugefügt, da die Benutzer wollten, dass es wie zuvor mit Express gebündelt wird. Das bedeutet, dass Sie nicht bodyParser.json()mehr verwenden müssen, wenn Sie sich in der neuesten Version befinden. Sie können express.json()stattdessen verwenden.
Der Release-Verlauf für 4.16.0 ist hier für Interessierte und die Pull-Anfrage hier .
app.use(express.urlencoded({ extended: true }));dann auch tun ?
JA! Richtig
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;
Ja, beide sind gleich.
Wenn Sie in die Datei node_module / express / lib / express.js gehen
Sie können unter Modulabhängigkeiten sehen, dass das Body-Parser-Modul bereits importiert ist
/**
* Module dependencies.
*/
var bodyParser = require('body-parser')
//other modules
Auf die Objekte und Methoden im bodyparser-Modul kann zugegriffen werden, wenn sie mit dem speziellen Objekt module.exports exportiert werden
exports = module.exports = createApplication;
exports.json = bodyParser.json
Dies ist vom Express-Objekt aus nur durch Aufrufen zugänglich
express.json()