import axios from "axios"; import constant from "./constant"; //处理url参数 import qs from "qs"; import store from "../store"; axios.defaults.baseURL = constant.baseURL; // 添加请求拦截器 axios.interceptors.request.use(function (config) { // 在发送请求之前做些什么 return config; }, function (error) { // 对请求错误做些什么 return Promise.reject(error); }); // 添加响应拦截器 axios.interceptors.response.use(function (response) { if (response.data !== null && response.data.hasOwnProperty("code") && response.data.code !== 200) { if (response.data.code === 300) { store.commit("loadCurrentUser", {}); localStorage.removeItem("userToken"); store.commit("loadCurrentAdmin", {}); localStorage.removeItem("adminToken"); window.location.href = constant.webURL + "/user"; } return Promise.reject(new Error(response.data.message)); } else { return response; } }, function (error) { // 对响应错误做点什么 return Promise.reject(error); }); // 当data为URLSearchParams对象时设置为application/x-www-form-urlencoded;charset=utf-8 // 当data为普通对象时,会被设置为application/json;charset=utf-8 export default { post(url, params = {}, isAdmin = false, json = true) { let config; if (isAdmin) { config = { headers: {"Authorization": localStorage.getItem("adminToken")} }; } else { config = { headers: {"Authorization": localStorage.getItem("userToken")} }; } return new Promise((resolve, reject) => { axios .post(url, json ? params : qs.stringify(params), config) .then(res => { resolve(res.data); }) .catch(err => { reject(err); }); }); }, get(url, params = {}, isAdmin = false) { let headers; if (isAdmin) { headers = {"Authorization": localStorage.getItem("adminToken")}; } else { headers = {"Authorization": localStorage.getItem("userToken")}; } return new Promise((resolve, reject) => { axios.get(url, { params: params, headers: headers }).then(res => { resolve(res.data); }).catch(err => { reject(err) }) }); }, upload(url, param, isAdmin = false) { let config; if (isAdmin) { config = { headers: {"Authorization": localStorage.getItem("adminToken"), "Content-Type": "multipart/form-data"} }; } else { config = { headers: {"Authorization": localStorage.getItem("userToken"), "Content-Type": "multipart/form-data"} }; } return new Promise((resolve, reject) => { axios .post(url, param, config) .then(res => { resolve(res.data); }) .catch(err => { reject(err); }); }); }, uploadQiniu(url, param) { let config = { headers: {"Content-Type": "multipart/form-data"}, timeout: 60000 }; return new Promise((resolve, reject) => { axios .post(url, param, config) .then(res => { resolve(res.data); }) .catch(err => { reject(err); }); }); } }