Promise解决异步操作
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中
进行接口请求封装
// options中包含着数据
export function axiosPackage(options) {
return new Promise((resolve, reject) => {
let httpDefaultOpts = { //http默认配置
method:options.method,
url:options.url,
timeout: 600000,
params:Object.assign(options.params),
data:Qs.stringify(options.params),
headers: options.method=='get'?{
'X-Requested-With': 'XMLHttpRequest',
"Accept": "application/json",
"Content-Type": "application/json; charset=UTF-8",
// "Authorization": token
}:{
'X-Requested-With': 'XMLHttpRequest',
'Content-Type': options.ContentType || 'application/x-www-form-urlencoded; charset=UTF-8', // 由于部分post请求使用的Content-Type是application/json
"Accept": "application/json",
}
}
if(options.ContentType == 'application/json'){
httpDefaultOpts.data = JSON.stringify(Object.assign(options.params))
}
if(options.method=='get'){ //判断是get请求还是post请求
delete httpDefaultOpts.data
}else{
delete httpDefaultOpts.params
}
instance(httpDefaultOpts)
.then(response => {//then 请求成功之后进行什么操作
if(response.data.code == 200){ // 服务端返回code200为成功,其他为错误提示
resolve(response.data)//把请求到的数据发到引用请求的地方
}else{
reject(response)
}
})
.catch(error => {
if (error && error.response) {
switch (error.response.status) {
case 400: error.message = '请求错误(400)' ; break;
case 401: error.message = "未授权,请重新登录(401)"; break;
case 403: error.message = "拒绝访问(403)"; break;
case 404: error.message = "请求出错(404)"; break;
case 408: error.message = "请求超时(408)"; break;
case 500: error.message = "服务器错误(500)"; break;
case 501: error.message = "服务未实现(501)"; break;
case 502: error.message = "网络错误(502)"; break;
case 503: error.message = "服务不可用(503)"; break;
case 504: error.message = "网络超时(504)"; break;
case 505: error.message = "HTTP版本不受支持(505)"; break;
default: error.message = `连接出错(${error.response.status})!`;
}
reject(error) }
})
})
}