Vue3+Ts+ElementPlus封装在请求前全屏显示加载

10 篇文章 0 订阅
8 篇文章 0 订阅
本文介绍了如何在Vue应用中使用axios创建请求实例,配置了请求和响应拦截器,展示了如何在发送请求时显示加载提示并处理不同状态下的错误信息。
摘要由CSDN通过智能技术生成
//导入axios
import axios from 'axios'
import { ElLoading, ElMessage } from 'element-plus'
import { useRouter } from 'vue-router';
import Tool from '../global';
import { nextTick, ref } from 'vue';
const router = useRouter()
const loadingInstance = ref()
//创建一个axios实例 
const instance = axios.create({
    headers: {
        'content-type': 'application/json',
    },
    // withCredentials: true,
    timeout: 15000  //5秒
})
// 请求拦截器测试

instance.interceptors.request.use(config => {
    // 在发送请求之前显示加载框
    loadingInstance.value = ElLoading.service({
      lock: true,
      text: '加载中...',
      background: 'rgba(255, 255, 255, 0.1)'
    });
    return config;
  }, error => {
    return Promise.reject(error);
  });
//http 拦截器
instance.interceptors.response.use(
    response => {
        //关闭加载框
        if(loadingInstance.value){
            nextTick(() => {
                loadingInstance.value.close();
            })
        }
        //拦截请求,统一相应
        if (response.data.isSuccess) {
            return response.data.result
        } else {
            ElMessage.error(response.data.msg)
            return response.data.result
        }
    },
    //error也可以处理
    error => {
        //关闭加载框
        if(loadingInstance.value){
            nextTick(() => {
                loadingInstance.value.close();
            })
        }
        if (error.response) {
            switch (error.response.status) {
                case 401:
                    ElMessage.warning("登录失效,请重新登录")
                    router.push({ path: '/mlogin' })
                    break
                case 404:
                    ElMessage.warning("接口不存在,请检查接口地址是否正确!")
                    break
                case 500:
                    ElMessage.warning("内部服务器错误,请联系系统管理员!")
                    break
                default:
                    return Promise.reject(error.response.data)   // 返回接口返回的错误信息 
            }
        }
        // else {
        //     ElMessage.error("遇到跨域错误,请设置代理或者修改后端允许跨域访问!")
        // }
    }
)

export default instance

创建一个ts文件,盛放以上内容,然后调用就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值