2014-07-17 21 views
30

Czy ktoś może mi powiedzieć zalecany (aktualny) sposób, aby uzyskać dane formularza POSTed w ekspresowym.Express dane formularza js

Tyle samouczków/wpisów itp. Mówić o bodyParser, ale nie jest to już dołączane do Express i innych blogów itp. Zaleca się używanie bezpośrednio urlencoded, ale teraz to też nie jest dostępne.

Próbując znaleźć dokładne informacje na temat tych ram lub technologii robi moją głowę.

BTW co ja intrerested w jest bardzo proste i małe dane formularza

+3

nie należy downvoted. Naprawdę nie ma prostej dokumentacji na temat odczytywania pojedynczego parametru POST. Przyjęte rozwiązanie używa wycofanego pakietu. – Jeremy

+3

Jeremy Myślę, że przyjęte rozwiązanie nie jest przestarzałym pakietem. Pakiet, o którym mówi Mritunjay, ma w nazwie nazwę łącznika i uważam, że różni się od middleware "bodyparser", które jest podatne na atak. Wydaje mi się, że w niektórych postach na blogu jest mowa o oryginalnym "bodyparserze". Dlatego zgadzam się, że nie należy go obniżać (tj. Nie wykazuje żadnych wysiłków badawczych), ponieważ szukałem rozwiązania na lata, ale problem polega na tym, że tyle starych i mylących informacji wokół mnie działało. –

+0

Dzięki za wyjaśnienie; Nie zdawałem sobie sprawy, że istnieje różnica między pakietami body-parser i bodyParser. Ta subtelność jest jednym z powodów, dla których pytanie to jest właściwe. – Jeremy

Odpowiedz

35

Należy zainstalować body-parser przez npm-install. Teraz jest oddzielnym oprogramowaniem pośredniczącym.

Po tej Dodaj następujący wiersz w app.js

var bodyParser = require('body-parser'); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded()); 
// in latest body-parser use like below. 
app.use(bodyParser.urlencoded({ extended: true })); 

Analizuje wniosek post jako object. Otrzymasz swoje zmienne w req.body.

W swoim module obsługi żądań post.

app.post('/post',function(request,response){ 
    console.log(request.body) //you will get your data in this as object. 
}) 
+9

w Express 4, teraz użyj: app.use (bodyParser.urlencoded ({extended: true})); – Jeff

5

Z README z body-parser.

This does not handle multipart bodies, due to their complex and typically large nature.

Powyższy będzie działać z x-www-form-urlencoded i JSON, ale to nie działać z każdym multipart. Dane formularzy są również wieloczęściowe z nagłówkiem "multipart/form-data".

W przypadku form-data, najlepszym rozwiązaniem byłoby, aby skorzystać z tej lib: https://github.com/noraesae/express-formidable

3

można skorzystać z modułu ekspresowej groźnego do tego. instalacji „ekspresowej ogromne” przez poleceniem npm instalacji ekspresowej ogromne

prosty przykład następująco

const express = require('express'); 
const formidable = require('express-formidable'); 

var app = express(); 

app.use(formidable()); 

app.post('/upload', (req, res) => { 
    //req.fields contains non-file fields 
    //req.files contains files 
    res.send(JSON.stringify(req.fields)); 
}); 

Click here for further description

Powiązane problemy