現在express 要安裝 body-parser 中間件
node install body-parser --save
app.js 寫入文件
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: true}));
過去無論哪一種網站應用程式的開發語言,初學者教學中第一次會提到的起手式,八九不離十就是GET/POST Request 的取值。
但是,在Node.js + Express 的世界中,仿佛人人是高手,天生就會使用,從不曾看到有人撰文說明。
這應該算是開發Web Service 的入門,在Client 與Server 的互動中,瀏覽器發出GET/POST Request 時會傳值給Server-side,常見應用就是網頁上以POST method 送出的表單內容,
或是網址列上的Query Strings (ex: page?page=3&id=5)。
然后,我們的網站應用程式透過解析這些參數,得到使用者上傳的資訊。
取得GET Request 的Query Strings:
GET /test?name=fred&tel=0926xxx572
app.get('/test', function(req, res) { console.log(req.query.name);
console.log(req.query.tel);});
如果是透過表單且是用POST method:
<form action='/test' method='post'>
<input type='text' name='name' value='fred'>
<input type='text' name='tel' value='0926xxx572'>
<input type='submit' value='Submit'>
</form>app.post('/test', function(req, res) { console.log(req.query.id);
console.log(req.body.name);
console.log(req.body.tel);});
當然也可以Query Strings 和POST method 的表單同時使用:
<form action='/test?id=3' method='post'>
<input type='text' name='name' value='fred'>
<input type='text' name='tel' value='0926xxx572'>
<input type='submit' value='Submit'>
</form>app.post('/test', function(req, res) { console.log(req.query.id);
console.log(req.body.name);
console.log(req.body.tel);});
順帶補充,還有另一種方法傳遞參數給Server,就是使用路徑的方式,可以利用Web Server 的HTTP Routing 來解析,常見于的各種Web Framework。
這不算是傳統標準規范的做法,是屬于HTTP Routing 的延伸應用。
GET /hello/fred/0926xxx572
app.get('/hello/:name/:tel', function(req, res) { console.log(req.params.name);
console.log(req.params.tel);});
來源: