在Node.js中發送HTTP請求,用的比較多的是request組件,該組件的功能非常強大,但是該組件需要通過回調函數的方式獲取操作的結果。
由於現在Node.js對ES6已經支持的比較好了,我們更希望request的結果能夠返回request對象,這樣能夠更加方便我們在獲取結果之後的操作。
我們可以使用ES6原生的Promise對象對request組件進行封裝使用
function request_promise(url) {
return new Promise((resolve,reject)=>{
request(url,(error, response, body)=>{
if(error){
reject(error);
}else{
resolve(body);
}
});
});
}
request_promise('http://127.0.0.1?id=23&name=koastal')
.then((body)=>{
console.log(body);
})
.catch((err)=>{
console.log(err);
})
今天看了一下vue的手冊,官方推薦使用axios代替jQuery的ajax請求。
axios在瀏覽器端和服務器端均可使用,返回的就是Promise對象,便於我們下一步操作,其中axios在瀏覽器段的兼容性與vue一致,都是要求IE8+。
下面是使用axios的例子
axios.get('http://127.0.0.1?id=23&name=koastal')
.then((body)=>{
console.log(body.data);
})
.catch((err)=>{
console.log(err);
});
既然有axios這麼好用的組件,就沒有必要對request封裝使用了,在需要返回Promise對象時,直接使用axios組件替代request即可。
request:https://github.com/request/request#readme
axios: https://github.com/mzabriskie/axios