在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