import axios from 'axios' import qs from 'qs' import Message from '../components/common/toasted' import router from '../router' const Axios = axios.create({ baseURL: '/data', /* //"http://139.224.105.107:8001/backend/", // 可用做反向代理 */ // timeout: 100000, responseType: 'json', withCredentials: true, // 是否允许带cookie这些 headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8' } }) /* //POST传参序列化(添加请求拦截器) */ Axios.interceptors.request.use( config => { // 在发送请求之前做某件事 let Public = { // 'srAppid': "" } 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) } if (config.method === 'get') { config.headers = { 'X-Requested-With': 'XMLHttpRequest', 'Accept': 'application/json', 'Content-Type': 'application/json; charset=UTF-8' } } else { config.headers = { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' } } // 若是有做鉴权token , 就给头部带上token if (sessionStorage.token) { config.headers.Authorization = sessionStorage.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) { Message({ message: res.data.message, type: 'error' }) return Promise.reject(res.data) } // 登陆超时判断 if ((res.data && !res.data.policeCameravideoIsLoginTimeout) || !res.data.data.policeCameravideoIsLoginTimeout) { Message({ message: '登录状态信息过期,请重新登录', type: 'error' }) router.push({ path: '/login' }) return Promise.reject(res.data) } else { window.sessionStorage.setItem('policeCameravideoIsLoginTimeout', 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.message = '请求错误(400)' break case 401: errJson.status = error.response.status errJson.message = '未授权,请重新登录(401)' 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.status = error.response.status errJson.message = '服务器错误(500)' 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 = '连接服务器失败!' Message({ showClose: true, message: '连接服务器失败!', type: 'error' }) // router.push({ // path: '/login' // }); } // 返回 response 里的错误信息 return Promise.reject(errJson) } ) export default Axios