index.js 5.19 KB
import Axios from 'axios';
import router from '../router';
import QS from 'qs';
import common from '../common/index';

// 环境的切换
// if (process.env.NODE_ENV == 'development') {    
//     axios.defaults.baseURL = 'https://www.baidu.com';} 
// else if (process.env.NODE_ENV == 'debug') {    
//     axios.defaults.baseURL = 'https://www.ceshi.com';
// } 
// else if (process.env.NODE_ENV == 'production') {    
//     axios.defaults.baseURL = 'https://www.production.com';
// }
var instance = Axios.create({
    timeout: 60000
});
instance.defaults.baseURL = common.httpUrl + 'api/';
instance.defaults.timeout = 60000;
instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';

// 请求拦截器
// instance.interceptors.request.use(
// 	config => {
// 		// 每次发送请求之前判断vuex中是否存在token        
// 		// 如果存在,则统一在http请求的header都加上token,这样后台根据token判断你的登录情况
// 		// 即使本地存在token,也有可能token是过期的,所以在响应拦截器中要对返回状态进行判断 
// 		const token = common.getCookie('SXH_token');
// 		token && (config.headers.Authorization = token);
// 		return config;
// 	},
// 	error => {
// 		return Promise.error(error);
// 	})
// // 响应拦截器

// instance.interceptors.response.use(
// 	response => {
// 		// 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据     
// 		// 否则的话抛出错误
// 		if (response.status === 200) {
// 			return Promise.resolve(response);
// 		} else {
// 			return Promise.reject(response);
// 		}
// 	},
// 	// 服务器状态码不是2开头的的情况
// 	// 这里可以跟你们的后台开发人员协商好统一的错误状态码    
// 	// 然后根据返回的状态码进行一些操作,例如登录过期提示,错误提示等等
// 	// 下面列举几个常见的操作,其他需求可自行扩展
// 	error => {
// 		if (error.response.status) {
// 			switch (error.response.status) {
// 				// 401: 未登录
// 				// 未登录则跳转登录页面,并携带当前页面的路径
// 				// 在登录成功后返回当前页面,这一步需要在登录页操作。                
// 				case 401:
// 					router.replace({
// 						path: '/Login',
// 						query: {
// 							redirect: router.currentRoute.fullPath
// 						}
// 					});
// 					break;

// 					// 403 token过期
// 					// 登录过期对用户进行提示
// 					// 清除本地token和清空vuex中token对象
// 					// 跳转登录页面                
// 				case 403:
// 					Message('登录过期,请重新登录');
// 					// 清除token
// 					common.deleCookie('SXH_token');
// 					// 跳转登录页面,并将要浏览的页面fullPath传过去,登录成功后跳转需要访问的页面 
// 					setTimeout(() => {
// 						router.replace({
// 							path: '/Login',
// 							query: {
// 								redirect: router.currentRoute.fullPath
// 							}
// 						});
// 					}, 1000);
// 					break;

// 					// 404请求不存在
// 				case 404:
// 					Message('网络请求不存在');
// 					break;
// 					// 其他错误,直接抛出错误提示
// 				default:
// 					Message(error.response.data.message);
// 			}
// 			return Promise.reject(error.response);
// 		}
// 	}
// );

export function get(url, params) {
    return new Promise((resolve, reject) => {
        instance.get(url, {
            params: params,
            headers: { 'X-Authorization': common.getCookie('SXH_token') }
        }).then(res => {
            resolve(res.data);
        }).catch(err => {
            reject(err.data)
        })
    });
}

export function put(url, params, type, query = '') {
    var ndata = type == 'json' ? JSON.stringify(params) : QS.stringify(params);
    if (type == 'json') {
        instance.defaults.headers.put['Content-Type'] = 'application/json;charset=UTF-8';
    } else if (type == 'file') {
        instance.defaults.headers.put['Content-Type'] = 'multipart/form-data;'
        instance.defaults.headers.put['ossPath'] = 'AdmissionsManageSys'
    } else {
        instance.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
    }
    return new Promise((resolve, reject) => {
        instance.put(url + query, ndata, {
                headers: {
                    'X-Authorization': common.getCookie('token')
                }
            }).then(res => {
                resolve(res.data);
            })
            .catch(err => {
                reject(err.data)
            })
    });
}

export function post(url, params, type) {
    var ndata = type == 'json' ? JSON.stringify(params) : QS.stringify(params);
    if (type == 'json') {
        instance.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';
    } else {
        instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
    }
    return new Promise((resolve, reject) => {
        instance.post(url, ndata, {
                headers: { 'X-Authorization': common.getCookie('SXH_token') }
            }).then(res => {
                resolve(res.data);
            })
            .catch(err => {
                reject(err.data)
            })
    });
}