1. 程式人生 > >http核心模組 node

http核心模組 node

ttp超文字傳輸協議
* 協議至少雙方 -> http雙方!!
* 客戶端(瀏覽器) -> 伺服器 BS
- 原生應用(QQ) -> 伺服器 CS

* 就是資料如何傳輸

* 特點:

* 一問一答(先有請求,後有響應)
* 5大特點:
* 輕便/ 簡單快速 支援客戶/伺服器模式
* 無連線(不為每一個請求保持住連結)
* 無狀態( 伺服器不記得客戶端是誰 ) -> cookie

#### 請求與響應互動的過程
* 見圖

#### 主體物件(核心物件http)
* 伺服器物件 ```http.createServer();```
* 客戶端物件```http.request({host:'www.baidu.com'});```
* 請求報文物件(對於伺服器來說,是可讀) req
* 響應報文物件(對於伺服器來說,是可寫) res

 

#### 狀態碼分類

* 1 開頭,正在進行中
* 2開頭,完成
* 3開頭 ,重定向
* 4開頭 , 客戶端異常
* 5開頭, 伺服器異常

#### 建立伺服器步驟
* 1:引入http核心物件
* 2:利用http核心物件的.createServer(callback); 建立伺服器物件
* 3:使用伺服器物件.listen(埠,ip地址) 開啟伺服器
* 4:callback(req,res) 根據請求處理響應

#### 請求報文物件(只讀)
* 請求首行中的url `req.url `
* 請求首行中的請求方式 `req.method`
* 請求頭中的資料`req.headers` 是一個物件
* 頭資訊中,也可以作為與伺服器互動的一種途徑

#### 響應物件

* 響應首行 `res.writeHead(狀態碼)`
* 寫響應頭
* 一次性寫回頭資訊
* `res.writeHead(200,headers)`
* 多次設定頭資訊
* `res.setHeader(key,value);`
* 寫響應體
* 一次性寫回響應體
* `res.end();`
* 多次寫回響應體
* `res.write();`

#### 請求與響應

* 頭行體
* content-type是對請求或者響應體資料,做出的說明

#### 響應體資料

* res.write('字串'||讀出檔案的二進位制資料)

* res.end('字串'||讀出檔案的二進位制數)

#### 獲取請求體資料

* 程式碼對比


* 瀏覽器: $('#xx').on('submit',function(e){ })
* 伺服器: req.on('data',function(d){ d.toString(); })