nodejs中的http模塊封裝了一個http服務器模塊和一個簡易的http客戶端。node
http.Server是一個基於事件的http服務器數組
http.request是http客戶端工具,用於向http服務器發起請求服務器
而http.createServer方法中的函數參數req和res分別表明請求對象和響應對象。socket
req是http.incomingMessage的實例函數
res是http.ServerResponse的實例工具
1、http服務器編碼
1).http.Server對象
http.Server是一個基於事件的服務器,繼承自EventEmitter,提供以下事件:繼承
request:當客戶端請求到來時,該事件被觸發,提供兩個參數res和req,表示響應信息和請求信息,是最經常使用的事件事件
connection:當TCP鏈接創建時,該事件被觸發,提供一個socket參數,是net.Socket的實例
close:當服務器關閉時,觸發事件
2).http.incomingMessage
是HTTP請求的信息,通常由http.Server的request事件發送,並做爲第一個參數傳遞,http請求通常能夠分爲兩部分:請求頭和請求體,並提供以下三個事件
1.data:當請求體數據到來時,該事件被觸發,提供一個參數chunk,表示接受的數據,若是該事件沒有被監聽,則請求體會被拋棄,該事件有可能會被屢次調用
2.end:當請求體數據傳輸完畢時,該事件會被觸發,,此後不會再有數據
3.close:當用戶請求結束時,該事件被觸發,不一樣於end,若是強制終止傳輸,也會觸發close
3).http.ServerResponse
是返回給客戶端的信息,決定了用戶最終看到的信息,通常由http.Server的request事件發送,並做爲第二個參數傳遞,他有三個重要的成員函數,用於返回響應頭,響應內容及結束請求。
res.writeHead(statusCode,[heasers]):向請求的的客戶端發送響應頭,該函數在一個請求中最多調用一次,若是不調用,則會自動生成一個響應頭
res.write(data,[encoding]):向請求的客戶端發送響應內容,data是一個buffer或者字符串,若是data是字符串,這須要定製編碼方式,默認爲"utf-8",在res.end調用以前能夠屢次調用
res.end([data],[encoding]):結束響應,告知客戶端全部發送已經結束,當全部要返回的內容發送完畢時,該函數必須被調用一次,兩個可選參數與res.write()相同
2、http客戶端
1.http.request(options,callback)
options是一個相似關聯數組的對象,表示請求的參數,callback做爲回調函數,須要傳遞一個參數,爲http.ClientResponse的實例,http.request返回一個http.ClientRequest的實例
2.http.get(options, callback)
是http.request的簡化版
3.http.ClientRequest
http.ClientRequest是由http.request或http.get返回產生的對象,表示一個已經產生且正在進行中的HTTP請求,提供一個response事件,就是咱們使用http.get和http.request方法中的回調函數所綁定的對象。
4.http.ClientResponse
與http.ServerRequest相似