Node.js中的HTTP請求與響應(yīng)詳解
在C#、OC中也是客戶端發(fā)起一個請求,服務(wù)端作出響應(yīng)。我們可以把這個過程抽象理解 .
- 1.客戶端給服務(wù)端發(fā)起請求相當于向服務(wù)端寫入一個流(writable)
- 2.服務(wù)端讀取客戶端的流(readable)
- 3.服務(wù)端向客戶端作出響應(yīng)相當于向客戶端寫入一個流(writable)
- 4.客戶端讀取服務(wù)端的響應(yīng)(readable)
整個流程分為兩部分一是客戶端的處理而是服務(wù)端的處理.最主要的還是客戶端請求和服務(wù)端響應(yīng).
一、http.ClientRequest對象
它實現(xiàn)了writable流,可以使用它的所有功能。http模塊中使用http.request(options,callback)方法來生成該對象。
1.options主要包括以下幾個可選:
host :服務(wù)器域名或IP地址,默認localhost
hostname:與host相同,但對url.parse()的支持優(yōu)于host.
port:端口
localAddress:網(wǎng)絡(luò)連接的本地接口
socketPath:Unix域套接字(使用host:port或socketPath)
method:請求方法 :GET、POST等默認GET
path:請求的資源路徑默認/.也可包括查詢字符串
headers:請求頭
auth:身份認證
agent:代理.如果使用Agent,則請求默認為Connection:keep-alive.可能的值有undefined,Agent,false
2.ClientRequest提供的事件與方法
事件:
response:當從服務(wù)器收到該請求的響應(yīng)時發(fā)出。該回調(diào)處理程序接收一個IncomingMessage對象作為唯一的參數(shù)。
socket:當一個套接字分配給該請求時發(fā)出。
connect:當服務(wù)器響應(yīng)一個由CONNECT方法發(fā)起的一個請求時發(fā)出。如果該事件未被客戶端處理,那么該連接將關(guān)閉
upgrade:當服務(wù)器響應(yīng)在其標頭包括一個更新請求的請求時發(fā)出
continue:當服務(wù)器發(fā)送一個100ContinueHTTP響應(yīng),指示客戶端發(fā)送請求正文時發(fā)出
方法:
write()、end()和writable流一樣
abort():終止請求。
setTimeout(timeout,[callback]):設(shè)置請求超時時間
setNoDelay([noDelay]):noDelay布爾值,true立即寫入,false緩沖寫入
setSocketKeepAlive([enable],[initualDelay]):啟用和禁用對客戶機請求的保持活動功能。initualDelay指定最后一個數(shù)據(jù)包和第一個保持活動請求之間的延遲。
二、http.ServerResponse對象
和http.ClientRequest對象一個也是實現(xiàn)了writable流。也可實現(xiàn)writable流的功能,另外還包括下面的事件屬性和方法。
事件或?qū)傩?
- close:在Response.End()刷新響應(yīng)之前關(guān)閉時發(fā)出。
- headersSent:布爾值.已發(fā)送為true.只讀。
- sendDate:布爾值,true時,Date標頭自動生成,并作為響應(yīng)的一部分發(fā)送
- statusCode:無須顯示的寫入標頭來指定響應(yīng)狀態(tài)碼。
方法:
writeContinue():發(fā)送一個HTTP/1.1 100 Continue消息給客戶端,請求被發(fā)送的正文內(nèi)容
writeHead(statusCode,[reasonPhrase],[headers]):把一個響應(yīng)標頭寫入請求。statusCode參數(shù)是HTTP響應(yīng)狀態(tài)代碼,reasonPhrase是字符串,表示StatusCode的原因.headers是響應(yīng)標頭對象。response.writeHead(200,'Success',{'Content-Length':body.length,'Content-Type':'text/plain'});
setTimeout(msecs,callback):設(shè)置客戶端連接的超時時間。
setHeader(name,value):設(shè)置標頭值。
getHeader(name):獲取標頭值。
removeHeader(name):移除標頭。
addTrailers(headers):將http尾隨標頭寫入響應(yīng)的結(jié)束處。
三、客戶端響應(yīng)和服務(wù)端請求
上面一二主要是writable流的,readable流的包括客戶端響應(yīng)和服務(wù)端請求。它們都是一個對象:IncomingMessage對象。
IncomingMessage對象長成什么樣子可以把它輸出來看.由于IncomingMessage對象對于我們開發(fā)的來說不經(jīng)常用,所以看看就好。
var http=require("http")
var options={
hostname:'www.baidu.com',
path:'',
port:'80',
method:'GET'
};
var req=http.request(options,function(response){
console.log(response);
});
req.end();以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
深入理解Commonjs規(guī)范及Node模塊實現(xiàn)
本篇文章主要介紹了深入理解Commonjs規(guī)范及Node模塊實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
Node.js與Sails ~項目結(jié)構(gòu)與Mvc實現(xiàn)及日志機制
Sails是一個Node.js的中間架構(gòu),很方便的幫助我們搭建web應(yīng)用程序。還有node.js與Sails日志機制在本文中也講到了,需要的朋友可以一起學(xué)習(xí)下2015-10-10
基于node實現(xiàn)websocket協(xié)議
這篇文章主要介紹了基于node實現(xiàn)websocket協(xié)議的相關(guān)資料,需要的朋友可以參考下2016-04-04
nodejs npm install全局安裝和本地安裝的區(qū)別
這篇文章主要介紹了nodejs npm install 全局安裝和非全局安裝的區(qū)別,即帶參數(shù)-g和不帶參數(shù)-g安裝的區(qū)別,需要的朋友可以參考下2014-06-06
Node Puppeteer圖像識別實現(xiàn)百度指數(shù)爬蟲的示例
本篇文章主要介紹了Node Puppeteer圖像識別實現(xiàn)百度指數(shù)爬蟲的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02

