axios拦截器等配置

import { Toast } from 'mand-mobile';
import utils from '@/utils/utils.js';
// 创建axios实例
const service = axios.create({
    timeout: 15 * 1000,
    baseURL: '/'
});
// request拦截器
service.interceptors.request.use(
    async  config => {
        let session=JSON.parse(localStorage.getItem('zsession'));
        let token=session?session.token:null;
        if (config.method === 'get') {
            token&&(config.params.token=token);
            config.params.traceLogId = utils.randomstring();
        } else if (config.method === 'post') {
            token&&(config.data.token=token);
            config.data.traceLogId = utils.randomstring();
        }
        return config;
    },
    error => {
        if (navigator.onLine) {
            Toast.info('服务器繁忙,请稍后重试');
        } else {
            Toast.info('网络异常,请稍后重试');
        }
        // Toast.info("网络异常,请稍候重试");
        console.log('request拦截器error', error);
        return Promise.reject(error);
    }
);

// respone拦截器

service.interceptors.response.use(
    response => {
        console.log('response', response);
        //  如果接口success = false
        if (!response.data.success) {
            if (response.data.errorStyle==='TOAST') {
                if (navigator.onLine) {
                    Toast.info('服务器繁忙,请稍后重试');
                } else {
                    Toast.info('网络异常,请稍后重试');
                }
            }
            return Promise.reject(response.data);
        }
        return response;
    },
    error => {
        if (navigator.onLine) {
            Toast.info('服务器繁忙,请稍后重试');
        } else {
            Toast.info('网络异常,请稍后重试');
        }
        console.log('err-------------' + error); // for debug
        return Promise.reject(error);
    }
);
const service1 = axios.create({
    timeout: 15 * 1000,
    baseURL: '/'
});
const api = {
    async get(url, data) {
        try {
            let res = await service.get(url, {
                params: data
            });

            res = res.data;
            return new Promise(resolve => {
                resolve(res);
            });
        } catch (err) {
            console.log('get出错', err);
            return Promise.reject(err);
        }
    },
    async post(url, data) {
        try {
            let res = await service.post(url, data);
            res = res.data;
            return new Promise((resolve) => {
                resolve(res);
            });
        } catch (err) {
            console.log('post错误', err);
            return Promise.reject(err);
        }
    },
    //  get1为不经过拦截器的get请求
    async get1(url, data) {
        try {
            let res = await service1.get(url, {
                params: data
            });

            res = res.data;
            return new Promise(resolve => {
                resolve(res);
            });
        } catch (err) {
            console.log('get1出错', err);
            return Promise.reject(err);
        }
    },
};


export {
    api
};

你可能感兴趣的:(axios拦截器等配置)