Jestem nowym użytkownikiem node.js i wyrażam i eksperymentowałem z nimi przez jakiś czas. Teraz jestem mylony z projektem wyraźnej struktury związanej z analizą treści żądania. Od oficjalnego przewodnika Express:Node.js wyraża poprawne użycie oprogramowania pośredniego bodyParser
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(logErrors);
app.use(clientErrorHandler);
app.use(errorHandler);
Po ustawieniu wszystkich middleware, następnie dodajemy trasę które chcemy obsługiwać:
app.post('/test', function(req, res){
//do something with req.body
});
Problem z tego podejścia jest to, że cały korpus żądanie zostanie przeanalizowany najpierw przed sprawdzeniem poprawności trasy. Wydaje się bardzo nieskuteczne analizowanie treści nieprawidłowych żądań. A nawet więcej, jeśli umożliwiają przetwarzanie Dodano:
app.use(express.bodyParser({uploadDir: '/temp_dir'}));
Każdy klient może bombardować serwera przesyłając dowolne pliki (wysyłając żądanie każdej trasy/ścieżki !!), wszystkie, które będą przetwarzane i przechowywane w "/ temp_dir". Nie mogę uwierzyć, że ta domyślna metoda jest szeroko promowana!
Możemy oczywiście przy określaniu trasy użyć funkcji bodyParser:
app.post('/test1', bodyParser, routeHandler1);
app.post('/test2', bodyParser, routeHandler2);
lub nawet może analizować ciała w każdej funkcji, które obsługiwać trasę. Jest to jednak żmudne.
Czy istnieje lepszy sposób korzystania z express.bodyParser tylko dla wszystkich ważnych (zdefiniowanych) tras i korzystania z możliwości przesyłania plików tylko na wybranych trasach, bez konieczności powtarzania wielu kodów?
Wow, upvote na ponowne swoją odpowiedź z rok temu to ostatnie wydarzenia re: 'bodyParser' –
„kod Początkujący aby pomóc Ci cholerstwo pracy w dniu 1 i produkcji kodu, który jest skuteczny i bezpieczne są często bardzo różne. " Amen. –