詳解nodejs http請求相關總結

今天給你們分享一篇關於詳解nodejshttp請求相關總結,首先經過node提供的http模塊,能夠經過其提供的get()和request()兩個方法發起http請求,get()是對request()方法的封裝,方便發起get請求,若是要實現post請求,那麼須要對request()方法進行封裝。 request()方法node

let req = http.request("www.codingke.com", (res) =>{服務器

console.log(res.statusCode);函數

});post

req.end();//必須調用end()方法結束請求url

須要注意的是,使用request()方法發起http請求的時候,request()方法會返回一個請求對象,必須調用返回的請求對象的end()方法,表示請求動做已經完成,不然請求將會一直掛起,等待請求動做的完成。code

request()方法參數問題:對象

request()的第一個參數能夠直接是一個url地址,第二個參數爲一個請求完成收到服務器響應後的回調函數,回調函數的參數只有一個即響應對象res事件

let req = http.request("www.codingke.com", (res) =>{get

console.log(res.statusCode);回調函數

});

req.end();//必須調用end()方法結束請求

request()的第一個參數能夠是一個請求數據配置對象,第二個參數爲一個請求完成收到服務器響應後的回調函數,回調函數的參數只有一個即響應對象res

let req = http.request(, (res) =>{

console.log(res.statusCode);

});

req.end();//必須調用end()方法結束請求

須要注意的是,request()方法不能同時傳遞url地址和請求數據配置對象,只能兩者選一個,也就是說request()方法只能傳遞兩個參數

get()方法

let req = http.get("www.codingke.com", (res) =>{

console.log(res.statusCode);

});

get()方法發起http請求的時候,get()方法也會返回一個請求對象,可是不用經過這個請求對象去調用end()方法,這一點和request()方法不一樣。

get()方法參數問題:

get()方法和request()方法的參數是同樣的,就是不須要調用end()方法。

設置請求超時的方法

1.要設置請求超時,能夠經過get()或者request()方法返回的請求對象setTimeout()方法來實現。

let req = http.get("www.codingke.com", (res) =>{

console.log(res.statusCode);

});

req.setTimeout(1,()=>{

console.log(請求超時了);

req.abort();//終止請求

});

1毫秒以後若是還沒收到響應,那麼就會觸發setTimeout的回調函數,此時能夠直接終止請求。

2.也能夠本身設立一個定時器來實現,如:

let requestTimer = null;

let req = http.get("www.codingke.com", (res) =>{

console.log(res.statusCode);

if(res.statusCode === 200){

clearTimeout(requestTimer);//請求超時以前完成,清除超時定時器

}

});

requestTimer = setTimeout(() => {

req.emit("timeout", {"msg": "請求超時了"});//若是請求超時了則發送timeout事件

}, 1000);

req.on("timeout",(msg) => {//監聽timeout事件並終止請求

console.log(收到timeout事件!);

req.abort();

console.log(終止請求);

});

獲取響應數據

get()和request()方法回調函數中的響應對象res中並不攜帶響應數據,若是要獲取響應數據,那麼須要經過響應對象去監聽data和end事件來獲取。

let req = http.get("www.codingke.com", (res) =>{

let resStr = "";

res.on("data", (res) => {

resStr += res;

});

res.on("end", () => {

console.log(resStr);

});

});

更多精彩請點擊主頁

相關文章
相關標籤/搜索