// 文件 api/request.js
import axios from 'axios';
import store from '@/store'
import { Mseeage,Loading } from 'element-ui'
let reqCount = 0
let tokenFail = null
let loading;
const service = axios.create({
baseURL:process.env.VUE_API, // VUE_API 在.env.development等文件中配置的环境变量 不同环境下的请求地址
timeout:6000, // 请求超时时间
})
// 请求拦截器
service.interceptors.request.use(
requset => {
reqCount++
loading = Loading.service({
fullScreen:true, // 全屏loading
background:'transparent' , // 背景色
})
if(store.user.token){ // 请求头添加 token与userName
request.headers.token = store.user.token
request.headers.userName = store.user.userName
}
return request
},
error => {
loading.close()
return Promise.reject(error)
}
)
// 响应拦截器
service.interceptors.response.use(
response => {
reqCount--
if(reqCount === 0) loading.close()
if(response.data.respCode === 111){ // token失效处理
if(!tokenFail){
tokenFail = setTimeOut(() => {
store.dispatch('user/logout') // 退出登陆
Message.error(response.data.message) // 提示语
tokenFail = null
return new Promise.reject(new Error('token已失效'))
},200)
}
}
return response.data
},
error => {
loading.close()
reqCount--
return Promise.reject(error)
}
)
export default service
request.js - 其他
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 下面的文章说得很详细了。 参考文章: RequestDispatcher跳转页面后,JS与CSS样式都不见了的解决...
- 常见问题之JS——The server refused this request because the requ...
- 错误信息如下: app.js:669 Uncaught Error: [🍍]: getActivePinia wa...
- 步骤 connect-multiparty拿出临时缓存文件 换取qiniu的token上传凭证 request.j...