有兩個module可以利用,url及querystring
下面是簡單的範例:
(function(){
//獲取modules
var http = require('http'); //架Server用
var url = require('url'); //解析url,包括GET參數
var querystring = require('querystring'); //可以用來解析POST的參數語句
//建立Server
var server = http.createServer(function(request, response) {
//得到url資訊
var urlInfo = url.parse(request.url, true);
//取得url的path
var pathname = urlInfo.pathname;
response.writeHead(200, {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "http://XXX" //如果要當做api給Client利如用Ajax呼叫的
//話,要加跨域的Header
});
//判斷是不是要處理的path name
if (pathname === "/somePathName") {
var GET_data = urlInfo.query; // 得到GET的參數資訊
console.log(GET_data);
//準備得到POST的參數資訊
var POST_data = ''; //POST_data 用來存POST資訊
//POST的資訊息會不斷送進來,不斷送的時候觸發data事件,結束觸發end事件,
// 綁在request上面以接收POST參數資訊
request.on("data", function(data){
POST_data += data
});
request.on("end", function(){
//可以利用querystring module來將POST參數資訊轉成物件
var postDataObject = querystring.parse(POST_data );
console.log(postDataObject);
});
} else {
//
}
});
設置Server的Port
server.listen(3000);
console.log('Server跑起來了,現在時間是:' + new Date());
})();
這邊要注意的是,POST的資料不是一次性的得到,而是不斷地傳送進Server,所以我們在request上綁定了"data"及"end"事件來監聽POST資料的傳遞狀態,在"data"事件中不斷地組合POST參數資料,當資料傳送後"end"事件會被觸發,這時才會得到完整的POST參數資料。
參考資料:
沒有留言 :
張貼留言