import axios from 'axios'
// import router from 'src/router'
// import store from 'store'
import { BASE_URL } from '../api'
export default function fetch(url='', data={}, method='get') {
method = method.toLowerCase();
let ops = {params: data};
if(method === 'post'){
ops = {data: data};
// axios默认content-type是application/json 若要改成application/x-www-form-urlencoded 就放开
// let pms = new URLSearchParams();
// for(let d in data){
// pms.append(d, data[d]);
// }
// ops = {data: pms};
}
let options = {
url,
...ops,
method
};
// 返回一个promise对象
return new Promise((resolve, reject) => {
const instance = axios.create({ //创建一个axios实例
// baseURL: BASE_URL, //设置默认根地址
timeout: 5000, //设置请求超时设置
withCredentials: true,
crossDomain:true
});
instance(options) //请求处理
.then(({data}) => {
// console.log('fetch:',data);
//请求成功时,根据业务判断状态
if(data.code === '000'){ //未登录,todo:状态码根据服务端返回修改,如跳登录页
location.href = `//com/user/login.action?returnurl=${encodeURIComponent(location.href)}`;
}else if(data.code == 0){
resolve(data);
return false
}
// console.log('fetch请求数据失败!');
reject(data)
})
.catch((error) => {
//请求失败时,根据业务判断状态
if (error.response) {
// let resError = error.response
let resCode = error.status;
let resMsg = error.message;
console.log('请求数据失败!');
reject({code: resCode, returnMessage: resMsg})
}
})
})
}
网友评论