import axios from 'axios'; import { getStore, setStore,getSessionStore,setSessionStore} from './storage'; import { router } from '../router/index'; import { Message } from 'view-design'; import Cookies from 'js-cookie'; // 统一请求路径前缀 let baseApi = config.baseApi; // 超时设定 axios.defaults.timeout = 15000; axios.interceptors.request.use(config => { return config; }, err => { Message.error('请求超时'); return Promise.resolve(err); }); // http response 拦截器 axios.interceptors.response.use(response => { const data = response.data; // 根据返回的code值来做不同的处理(和后端约定) switch (data.code) { case 401: // 未登录 清除已登录状态 Cookies.set('userInfo', ''); setSessionStore('accessToken', ''); if (router.history.current.name != "login") { if (data.message !== null) { Message.error(data.message); } else { Message.error("未知错误,请重新登录"); } router.push('/login'); } break; case 403: // 没有权限 if (data.message !== null) { Message.error(data.message); } else { Message.error("未知错误"); } break; case 500: // 错误 if (data.message !== null) { Message.error(data.message); } else { Message.error("未知错误"); } break; default: return data; } return data; }, (err) => { // 返回状态码不为200时候的错误处理 Message.error(err.toString()); return Promise.resolve(err); }); export const getRequest = (url, params, responseType = null) => { let accessToken = getSessionStore('accessToken'); return axios({ method: 'get', url: `${baseApi}${url}`, params: params, headers: { 'accessToken': accessToken, }, responseType:responseType }); }; export const getmethod = (url, params) => { let accessToken = getSessionStore('accessToken'); return axios({ method: 'get', url: `${baseApi}${url}`, params: params, headers: { 'accessToken': accessToken, }, responseType:"blob" }); }; export const postRequest = (url, params) => { let accessToken = getSessionStore("accessToken"); return axios({ method: 'post', url: `${baseApi}${url}`, data: params, transformRequest: [function (data) { let ret = ''; for (let it in data) { ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'; } ret = ret.substring(0, ret.length - 1); return ret; }], headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'accessToken': accessToken } }); }; export const putRequest = (url, params) => { let accessToken = getSessionStore("accessToken"); return axios({ method: 'put', url: `${baseApi}${url}`, data: params, transformRequest: [function (data) { let ret = ''; for (let it in data) { ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'; } ret = ret.substring(0, ret.length - 1); return ret; }], headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'accessToken': accessToken } }); }; export const postBodyRequest = (url, params) => { let accessToken = getSessionStore('accessToken'); return axios({ method: 'post', url: `${baseApi}${url}`, data: params, headers: { 'accessToken': accessToken } }); }; /** * 无需token验证的GET请求 避免旧token过期导致请求失败 * @param {*} url * @param {*} params */ export const getNoAuthRequest = (url, params) => { return axios({ method: 'get', url: `${baseApi}${url}`, params: params }); }; export const postNoAuthRequest = (url, params) => { return axios({ method: 'post', url: `${baseApi}${url}`, data: params, transformRequest: [function (data) { let ret = ''; for (let it in data) { ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'; } ret = ret.substring(0, ret.length - 1); return ret; }], headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }); };