//Node.js標準庫提供了http模塊,其中封裝了一個高效的http服務器和一個簡易的http客戶端 //http.Server是一個基於事件的HTTP服務器,它的核心由Node.js下層c++部分實現,而接口由//Javascript封裝,兼顧了高性能與簡易性 //http服務器 var http = require('http'); http.createServer(function(req,res){ res.writeHead(200,{'Content-Type','text/html'}); res.write('<h1>hello node</h1>'); res.end(); }).listen(3000); //這段代碼中http.createServer建立了一個http.Server的實例; //req(request):請求,res(response):響應 //響應代碼200,表示成功; //指定相應頭爲{'Content-Type','text/html'}; //而後寫入相應體 //最後經過res.end();結束響應併發送 //listen()函數,啓動服務器而且監聽3000端口 //Event.Emitter提供瞭如下幾個事件 //request:當客戶端請求到來時,該事件被觸發,提供2個參數req和res,分別是http.ServerRequest和http.ServerResponse的實例,表示請求和響應信息 //connection:當TCP鏈接創建時該事件被觸發,提供一個參數socket爲net.Socket的實例,connection的粒度要大於request,由於客戶端在keep-alive下可能會在同 //一鏈接內發送屢次請求 //close:當服務器關閉時觸發,注意不是用戶斷開鏈接時 //http.ServerRequest();是http請求的信息,通常由http.request發送 //因爲請求體可能相對較長,須要必定的時間傳輸,所以http.ServerRequest()提供了3個事件用於控制請求體傳輸 //data:當請求體到來時觸發,該事件提供一個參數chunk,表示接受到的數據,若是該事件沒有被監聽,那麼請求體將會被拋棄,該事件可能會被調用屢次 //end:當請體求傳輸數據完成時,該事件被觸發,此後將不會有數據到來 //close:用戶當前請求結束時,該事件被觸發,不一樣於end,用戶強制中終止了傳輸,也仍是調用close //http.ServerRequest的屬性 //complete 客戶端請求是否已經發送完成 //httpVersion http協議版本,一般是1.0或1.1 //method 如:GET,POST,PUT,DELETE等 //url 原始的請求路徑,例如/static/image/x.jpg或/user?name=smile //headers http請求頭 //trailers http請求尾(不常見) //connection 當前http鏈接套接字,爲net.Socket的實例 //socket connection的別名 //client client屬性的別名 //querystring //querystring.parse && querystring.stringify //用法和Json.parse,Json.stringify幾乎相同 @querystring.parse; var str = 'name=smile&age=20&sex=male'; console.log(querystring.parse(str)); //{name:smile,age:20,sex:male}; @querystring.stringify var querystring = require('querystring'); var str = {name:'smile',parents:['zq','wry'],age:21}; console.log(querystring.stringify(str)); //name=smile&parents=zq&parents=wry&age=21; //獲取get請求內容 var url = require('url'); //ex: //http://127.0.0.1:3000/user?name=smile // search: '?name=smile' // query: { name: 'smile' } // pathname: '/user' // path: '/user?name=smile' // href: '/user?name=smile' } //其中query就是咱們所謂的get請求, //經過url.parse將原始的path解析爲一個對象 //路徑是pathname //獲取post請求內容