You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

68 lines
1.5 KiB

import axios from 'axios'
import { Message } from 'element-ui'
import { showLoading, hideLoading } from './apiHelper'
// 创建axios实例
const service = axios.create({
baseURL: process.env.VUE_APP_SERVER_API, // api的base_url
timeout: 40000, // 请求超时时间2
withCredentials: true,
headers: {
projectName: process.env.VUE_APP_PROJECT_NAME
}
})
// request拦截器
service.interceptors.request.use(config => {
showLoading()
const token = localStorage.getItem('token')
if (token) {
config.headers.Authorization = token
}
return config
}, error => {
// Do something with request error
console.error(error) // for debug
Promise.reject(error)
})
// respone拦截器
service.interceptors.response.use(
response => {
const res = response.data
hideLoading()
if (res.code === undefined) {
return res
}
if (res.code === 1) {
if (res.data !== null) {
return res.data
}
return null
} else {
let msg
if (res.message !== null && res.msg === undefined) {
msg = res.message
} else if (res.msg !== null) {
msg = res.msg
}
Message({
message: msg,
type: 'error',
duration: 3 * 1000
})
return Promise.reject(res)
}
},
error => {
console.error('err' + error)// for debug
Message({
message: error.message,
type: 'error',
duration: 3 * 1000
})
hideLoading()
return Promise.reject(error)
}
)
export default service