node學習筆記(四)

//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請求內容
相關文章
相關標籤/搜索