這篇文章帶給大家的內容是關於nodejs http請求相關的總結介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
透過node提供的http模組,可以透過其提供的get()和request()兩個方法發起http請求,get()是對request()方法的封裝,方便發起get請求,如果要實作post請求,那麼需要對request()方法進行封裝。
request()方法
let req = http.request("http://www.baidu.com", (res) =>{ console.log(res.statusCode); }); req.end();//必须调用end()方法结束请求
需要注意的是,使用request()方法發起http請求的時候,request()方法會傳回一個請求對象,必須呼叫傳回的請求對象的end()方法,表示請求動作已經完成,否則請求將會一直掛起,等待請求動作的完成。
request()方法參數問題:
request()的第一個參數可以直接是一個url位址,第二個參數為一個請求完成收到伺服器回應後的回呼函數,回呼函數的參數只有一個即回應對象reslet req = http.request("http://www.baidu.com", (res) =>{ console.log(res.statusCode); }); req.end();//必须调用end()方法结束请求request()的第一個參數可以是一個請求資料配置對象,第二個參數為一個請求完成收到伺服器回應後的回呼函數,回呼函數的參數只有一個即回應對象res
let req = http.request({hostname:"www.baiduc.com",port:80}, (res) =>{ console.log(res.statusCode); }); req.end();//必须调用end()方法结束请求
要注意的是,request()方法不能同時傳遞url位址和請求資料配置對象,只能二者選一個,也就是說request()方法只能傳遞兩個參數
get ()方法
let req = http.get("http://www.baidu.com", (res) =>{ console.log(res.statusCode); });
get()方法發起http請求的時候,get()方法也會傳回一個請求對象,但是不用透過這個請求對象去呼叫end()方法,這一點和request()方法不同。
get()方法參數問題:
get()方法和request()方法的參數是一樣的,就是不需要呼叫end()方法。
設定請求逾時的方法
要設定請求逾時,可以透過get()或request()方法傳回的請求物件setTimeout()方法來實作。let req = http.get("http://www.baidu.com", (res) =>{ console.log(res.statusCode); }); req.setTimeout(1,()=>{ console.log(`请求超时了`); req.abort();//终止请求 });
1毫秒之後如果還沒收到回應,那麼就會觸發setTimeout的回呼函數,此時可以直接終止請求。
2. 也可以自己設立一個計時器來實現,如:
let requestTimer = null; let req = http.get("http://www.baidu.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("http://www.baidu.com", (res) =>{ let resStr = ""; res.on("data", (res) => { resStr += res; }); res.on("end", () => { console.log(resStr); }); });
【相關推薦:node.js影片教學】
以上是nodejs http請求相關的總結介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!