vue中路由接口请求拦截和响应

27 篇文章 0 订阅
/**
 * axiso 封装
 * 请求拦截,错误统一处理
 */
import axios from "axios";
import store from "@/store";
import Cookies from "js-cookie";
import {message} from "@/globalFn/resterMessage.js";
import {IndexFn} from "@/globalFn/goIndex.js";
import {showFullScreenLoading,tryHideFullScreenLoading} from "@/globalFn/resterLoading.js";
import {config} from "@/api/config.js"//环境配置接口

const service = axiso.create({
    timeout:3000,//设置请求超时接口
    baseURL:config.baseUrl
})
//请求拦截器
service.interceptors.request.use(
    config=>{
        if(Cookies.get("token")&&store.state.userToken.token){
            const token = store.state.userToken.token;
            token && (config.headers.Authorization = token);
        }
        if(config.headers.isLoading == undefined){
            showFullScreenLoading();
        }
        return config;
    },
    error=>{
        tryHideFullScreenLoading();
        message.error({message:"加载超时",center:true,duration:1000,offset:150})
        return Promise.error(error);
    }
)
//响应拦截器
service.interceptors.reponse.use(
    response=>{
        tryHideFullScreenLoading();
        //走文件导出exele
        if(response.headers["content-type"]== "application/vnd.ms-excel;charset-utf-8"){
            message.success({message:"正在导出中,请等待",center:true,duration:2000,offset:150});
            return  Promise.resolve(reponse);
        }
        //走文件下载
        if(response.data.type){
            message.success({message:"正在下载中",center:true,duration:2000,offset:150});
            return Promise.resolve(reponse);
        }
        //token过期
        if(response.data.code== 520){
            message.error({message:"登录过期,请重新登录",center:true,duration:2000,offset:150});
            IndexFn();
            return Promise.resolve(response);
        }
        //走接口请求
        if(response.data.code =="s00000000"){
            return Promise.resolve(response);
        }else{
            message.wraning({message:reponse.data.message,center:true,offset:150,duration:1000});
            return Promise.reject(reponse);
        }
    },
    error=>{
        tryHideFullScreenLoading();
        if(error.reponse.status){
            switch(error.reponse.status){
                case 400:message.error({message:"请求出错",center:true,duration:1000,offset:150});
                break;
                case 403:message.error({message:"拒绝访问",center:true,duration:1000,offset:150});
                break;
                case 404:message.error({message:"请求出错",center:true,duration:1000,offset:150});
                break;
                case 408:message.error({message:"请求超时",center:true,duration:1000,offset:150});
                break;
                case 500:message.error({message:"服务器内部错误",center:true,duration:1000,offset:150});
                break;
                case 502:message.error({message:"网络错误",centr:true,duration:1000,offset:150});
                case 503:message.error({message:"服务器不可用",center:true,duration:1000,offset:150});
                break;
                case 504:message.error({message:"网络超时",center:true,duration:1000,offset:150});
                break;
                case 505:message.error({message:"HTTP版本不支持",center:true,duration:1000,offset:150});
                break;
                //其他错误,直接抛出
                default:message.error({message:error.reponse.data.message,duration:1000,offset:150});
            }
            return Promise.reject(error.reponse);
        }else{
            message.error({message:"连接服务器失败"});
        }
    }
)
export default service;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值