Ich bin neu bei node.js und Express und habe mit ihnen für eine Weile experimentiert. Jetzt bin ich verwirrt mit dem Design des Express-Frameworks im Zusammenhang mit dem Parsen des Anfragekörpers. Von der offiziellen Führung von Express:Node.js ausdrückliche korrekte Verwendung von bodyParser Middleware
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(logErrors);
app.use(clientErrorHandler);
app.use(errorHandler);
Denn die Middleware einrichten, dann fügen wir die Route, die wir behandeln möchten:
app.post('/test', function(req, res){
//do something with req.body
});
Das Problem bei diesem Ansatz ist, dass all Anforderungstext wird zuerst geparst, bevor die Gültigkeit der Route überprüft wird. Es scheint sehr ineffizient zu sein, den Körper ungültiger Anfragen zu analysieren. Und noch mehr, wenn wir ermöglichen die Upload-Verarbeitung:
app.use(express.bodyParser({uploadDir: '/temp_dir'}));
Jeder Client den Server durch das Hochladen alle Dateien bombardieren kann (auf Wunsch auf jedem Weg/Pfad zu senden !!), die alle, die verarbeitet werden und gehalten in der '/ temp_dir' Ich kann nicht glauben, dass diese Standardmethode weit verbreitet ist!
Wir können natürlich die Funktion bodyParser verwenden, wenn die Route definieren:
app.post('/test1', bodyParser, routeHandler1);
app.post('/test2', bodyParser, routeHandler2);
oder vielleicht sogar den Körper analysieren in jeder Funktion, die die Route handhaben. Dies ist jedoch mühsam zu tun.
Gibt es eine bessere Möglichkeit, express.bodyParser nur für alle gültigen (definierten) Routen zu verwenden und die Datei-Upload-Funktion nur auf ausgewählten Routen zu verwenden, ohne viele Code-Wiederholungen zu haben?
Wow, upvote für vor Ihrer Antwort von einem Jahr erneuten Besuch jüngsten Entwicklungen umfassen re: 'bodyParser' –
„Anfänger Code Sie das verdammte Ding arbeiten an Tag 1 und Produktionscode zu helfen, die effizient und sicher sind oft sehr unterschiedlich. " Amen. –