使用 NodeJS + Express 從 GET/POST Request 取值

過去無論哪一種網站應用程式的開發語言,初學者教學中第一次會提到的起手式,八九不離十就是 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:</h2>

GET /test?name=fred&tel=0926xxx572

app.get('/test', function(req, res) {
    console.log(req.query.name);
    console.log(req.query.tel);
});

如果是透過表單且是用 POST method:</h2>

<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);
});

来源:http://fred-zone.blogspot.com/2012/02/nodejs-express-getpost-request.html

9 Responses to “使用 NodeJS + Express 從 GET/POST Request 取值”

3d打印 2013年01月09日 15:49

楼主是港台的?都是繁体字难看啊。

峰云 2013年09月14日 19:08

这post有点问题。。。。
[root@102 node]# curl -d ‘name=sdf&tel=3333333333’ http://127.0.0.1:3000/jieshou
TypeError: Cannot read property ‘name’ of undefined
at /node/1.js:37:25
at callbacks (/node/node_modules/express/lib/router/index.js:164:37)
at param (/node/node_modules/express/lib/router/index.js:138:11)
at pass (/node/node_modules/express/lib/router/index.js:145:5)
at Router._dispatch (/node/node_modules/express/lib/router/index.js:173:5)
at Object.router (/node/node_modules/express/lib/router/index.js:33:10)
at next (/node/node_modules/express/node_modules/connect/lib/proto.js:190:15)
at Object.expressInit [as handle] (/node/node_modules/express/lib/middleware.js:30:5)
at next (/node/node_modules/express/node_modules/connect/lib/proto.js:190:15)
at Object.query [as handle] (/node/node_modules/express/node_modules/connect/lib/middleware/query.js:44:5)

GrazynaFran 2015年10月09日 18:15

I don’t care about this, now i’m earning
average 2000£ a month. There is tricky way
i found on the web. If you want to learn it too, just type in google:
Irahsik’s betting system

Adelaida 2016年07月24日 14:59

I see you don’t monetize your site,you can make some additional money, just search
in google for: ideas by Loocijano

Vern 2016年09月03日 12:10

It’s an awesome piece oof writing designed for aall the online users; they
will take advzntage from it I amm sure.

escort directory 2016年09月15日 06:46

Absolutely composrd content, thsnks for selective information.

numberoneblogger.com 2016年09月15日 16:38

You can definitely see yourr expertise in the paintings youu
write. The arena hopes for more passionate wrifers like you who
aren’t afraid to ssay how they believe. All thhe time follow
yourr heart.

softwaresearch engines actually 2016年09月21日 17:32

Yeah bookmaking this wasn’t a riisky decision outstanding post!

earn money at home 2016年09月24日 01:43

Really good information can be found on website.

Leave a Reply