53 lines
1.8 KiB
JavaScript
53 lines
1.8 KiB
JavaScript
import axios from 'axios'
|
||
import router from '@/router'
|
||
import { vm } from '@/main.js'
|
||
import { globalSuccessToast } from '@/settings'
|
||
|
||
const service = axios.create({
|
||
baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
|
||
withCredentials: true, // 设置是否在请求中携带cookie
|
||
timeout: 30000 // 请求超时时间
|
||
})
|
||
|
||
// request interceptor(请求拦截器)
|
||
service.interceptors.request.use(
|
||
config => {
|
||
vm.$Loading.show()
|
||
// 给config统一配置属性
|
||
return config
|
||
},
|
||
error => {
|
||
return Promise.reject(error)
|
||
}
|
||
)
|
||
|
||
//response (响应拦截器)
|
||
service.interceptors.response.use(
|
||
response => {
|
||
vm.$Loading.hidden()
|
||
const res = response.data
|
||
const code = response.status
|
||
if (code !== 200) {
|
||
vm.$Toast.error(res.msg)
|
||
return Promise.reject(new Error(res.msg || 'Error'))
|
||
} else {
|
||
if (globalSuccessToast && res.code == 0) { //全局成功提示
|
||
// vm.$Toast.success('查询成功!') //暂时不要
|
||
}
|
||
return res
|
||
}
|
||
},
|
||
error => {
|
||
vm.$Loading.hidden()
|
||
if (error.response.status && error.response.status == 401) { //拦截401,代表登陆失效,触发页面刷新后再触发路由拦截,拦截到重新登录
|
||
// 401一般是权限问题或者登录失效
|
||
// router.push('/login') //如果项目存在登录验证,应该在这里返回登录页面重新登录;
|
||
console.log('response status is 401')
|
||
}
|
||
vm.$Toast.error(error)
|
||
return Promise.reject(error) //请求错误不return出去,直接在这里处理toast
|
||
}
|
||
)
|
||
|
||
export default service
|