import router from '@/router'
import axios from 'axios'
import { Message } from 'element-ui'
import $cookie from 'vue-cookie'
// 创建实例
const instance = axios.create({
timeout: 10000, // 设置超时时间
headers: { // 设置请求头
'Content-Type': 'application/json' // 默认请求头为它
// "Content-Type": "text/html",
// 'Content-Type': 'application/x-www-form-urlencoded',
}
})
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
const token = $cookie.get('atoken')
if (token) {
config.headers.token= token
}
return config
}, function (error) {
Message.error({
message: '加载超时'
})
Promise.reject(error)
})
// 添加响应拦截器
instance.interceptors.response.use(function (response) {
// 对响应数据做点什么 错误信息提示
if (response.status === 200) {
if (response.data.status === 200) {
return Promise.resolve(response)
} else if (response.data.status === 501 || response.data.status === 502) {
// 501、502是token失效的状态码
Message.error({
message: response.data.msg
})
$cookie.delete('atoken')
router.replace({ path: '/login' })
} else {
Message.error({
message: response.data.msg
})
}
} else {
return Promise.resolve(response)
}
}, function (error) {
return Promise.reject(error)
})
function request (options) {
options.method = options.method ? options.method : 'get'
if (options.method.toLowerCase() === 'get') { // axios中,get请求参数是params,post请求参数是data
options.params = options.data
}
return instance(options)
}
// 将实例抛出去
export default request
`
vue封装axios
最新推荐文章于 2024-07-22 15:13:59 发布