import axios from "axios"; import { Notification } from "element-ui"; import router from "@/router"; const Axios = axios.create({ responseType: "json", withCredentials: true, // 是否允许带cookie这些 }); /* //POST传参序列化(添加请求拦截器) */ Axios.interceptors.request.use( (config) => { // config.data = JSON.stringify(config.data) // let Public = {}; // if ( // config.method === "post" || // config.method === "put" || // config.method === "delete" // ) { // // 序列化 // // config.data = qs.stringify(config.data); // // config.data = qs.stringify(Object.assign(Public, config.data)); // } else { // config.method = "get"; // config.params = Object.assign(Public, config.data); // } // config.headers = { // "X-Requested-With": "XMLHttpRequest", // Accept: "application/json", // "Content-Type": "application/json; charset=UTF-8" // }; // 若是有做鉴权token , 就给头部带上token let token = sessionStorage.getItem("loginedInfo") && JSON.parse(sessionStorage.getItem("loginedInfo")).access_token; if (token != undefined) { config.headers.Authorization = token; } return config; }, (error) => { /* Message({ showClose: true, message: "提交出错,请联系管理员!", type: "error" }); */ return Promise.reject(error); } ); /* //返回状态判断(添加响应拦截器) */ Axios.interceptors.response.use( (res) => { /* //对响应数据做些事 */ if (res.data && res.statusText !== "OK" && res.status !== 200) { console.log("听说你对相应数据做了些事", res); Notification({ title: "", message: res.data.message, type: "error", }); console.log("拦截器:", res); return Promise.reject(res.data); } // 登陆超时判断 // if ((res.data && !res.data.policeCameravideoIsLoginTimeout) || !res.data.data.policeCameravideoIsLoginTimeout) { // Message({ // message: '登录状态信息过期,请重新登录', // type: 'error' // }) // router.push({ // path: '/' // }) // return Promise.reject(res.data) // } else { // window.sessionStorage.setItem('policeCameravideoIsLoginTimeout', JSON.stringify(true)) // } return res.data ? res.data : {}; /* //return res.data ? res.data : {}; */ }, (error) => { let errJson = { success: false, }; // 下面是接口回调的satus ,因为我做了一些错误页面,所以都会指向对应的报错页面 if (error && error.response) { switch (error.response.status) { case 400: errJson.status = error.response.status; errJson.data = error.response.data; errJson.message = "请求错误(400)"; break; case 401: errJson.status = error.response.status; errJson.message = "未授权,请重新登录(401)"; // console.log("标志位:",AuthData.isLoginout) // if (!AuthData.isLoginout) { // Notification({ // title:"", // showClose: true, // message: "登录信息失效,请重新登录!", // type: "error" // }); // } // AuthData.isLoginout = true sessionStorage.removeItem("expires_in"); sessionStorage.removeItem("loginedInfo"); sessionStorage.removeItem("userInfo"); router.push({ path: "/login", }); Notification({ title: "", showClose: true, message: "登录信息失效,请重新登录!", type: "error", }); break; case 403: errJson.status = error.response.status; errJson.message = "拒绝访问(403)"; break; case 404: errJson.status = error.response.status; errJson.message = "找不到请求路径(404)"; break; case 408: errJson.status = error.response.status; errJson.message = "请求超时(408)"; break; case 500: errJson = error.response.data; break; // case 501: // errJson.status = error.response.status; // errJson.message = "服务未实现(501)"; // break; // case 502: // errJson.status = error.response.status; // errJson.message = "网络错误(502)"; // break; // case 503: // errJson.status = error.response.status; // errJson.message = "服务不可用(503)"; // break; // case 504: // errJson.status = error.response.status; // errJson.message = "网络超时(504)"; // break; // case 505: // errJson.status = error.response.status; // errJson.message = "HTTP版本不受支持(505)"; // break; default: errJson.status = error.response.status; errJson.message = `连接出错(${error.response.status})!`; } if (errJson.status >= 400 && errJson.status < 500) { // 跳转错误页面 // router.push({ // path: "/error", // query: errJson // }); } else { // 服务器错误退出系统,弹窗提示 // Message({ // showClose: true, // message: errJson.message, // type: "error" // }); // router.push({ // path: "/login" // }); } } else { errJson.message = "连接服务器失败!"; Notification({ title: "", showClose: true, message: "连接服务器失败!", type: "error", }); } // 返回 response 里的错误信息 return Promise.reject(errJson); } ); export default Axios;