前言
在NodeJs中,路由提供請求的 URL 和其他需要的 GET 及 POST 參數,隨後路由需要根據這些數據來執行相應的代碼,
通俗點說:通過 NodeJs路由可以拿到 地址欄 url 和 http 模塊 get post 參數
, 通過一個實例來實踐一下
創建一個 router.js
實現一個簡單的服務,內容如下:
var http = require("http"); // 引入http 模塊,後續會講到 http 模塊
var url = require("url"); // node 自由模塊
// req : request , res: response
http.createServer(function (req, res) {
// 寫入請求頭
res.writeHead(200, {
"Content-Type": "text/plain"
})
// 頁面寫入內容
res.write("Hello Router");
//結束
res.end();
// 打印路由 req
console.log(url.parse(req.url).pathname)
}).listen("1234", "127.0.0.1");
我們需要的所有數據參數都會包含在 request 對象中,也就是我上邊簡寫的 req
, 那麼我還需要一些額外的模塊, url模塊
解析地址欄url ,querystring模塊
解析get請求,這裏我們用一個 url
模塊 來實踐一下NodeJs路由。
如上代碼準備完畢後,同樣運行 node router.js
,然後打開對應我們監聽的IP or 端口,也就是 127.0.0.1:1234
,頁面毋庸置疑會顯示 Hello Router
,然後我們修改 url 分別爲
127:0.0.1:1234/home
127:0.0.1:1234/about
打印
PS C:\HiSen\myWorkDemo\node_demo> node router.js
/ // url 解析爲 /
/favicon.ico
/home // url 解析爲 /home
/favicon.ico
/about // url 解析爲 /about
/favicon.ico
結果一目瞭然 , 我們可以通過 url 模塊的 url.parse(req.url).pathname
來監聽到頁面路由的變化,從而做不同的事情。
Get - Post
路由通過上邊的實例已經有了個簡單的認識,那麼 GET POST
其實也是相同的邏輯,我們的請求參數都可以通過 request
對象拿到;
Get
通過 request.query.xxxPost
通過 request.body.xxx
Post
獲取參數,原生 NodeJs
是可以的,根據我以往的經驗,使用 express
框架好像略有一點點小插曲,並不能直接獲取到;解決方法還是挺多的,例如:
bodyParser
插件,具體怎麼樣,請大家持續關注,我後續的 HTTP 模塊會講解清楚。