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
|