nodejs之HTTP模塊學習

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相似

相關文章
相關標籤/搜索