有兩個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參數資料。
參考資料:
沒有留言 :
張貼留言