基于axios二次封装网络请求

本文介绍了基于axios的二次封装,结合vuex、vue-router和element-UI实现网络请求的模块化。特点包括控制loading显示、错误提示、请求处理、多域名支持和接口统一管理。详细阐述了文件目录和功能,以及如何在vue项目中使用和处理断网等异常情况。
摘要由CSDN通过智能技术生成

基于axios二次封装网络请求

本套网络请求基于axios的二次封装,用到了vuex(断网及其他错误的标识)、vue-router(页面跳转)和element-UI的一些交互;封装采用模块化思想,各个文件的功能单一,大大降低了耦合性。

请求亮点:

1、可控制请求时loading的样式及是否需要显示loading;

2、请求错误时的统一提示

3、请求超时、断网、请求报错的统一处理

4、请求可以有多个域名

5、请求接口的统一管理

6、封装采用模块化思想

 

一、文件目录:

二、各文件介绍

1、/http/axios.js

 

import axios from "axios"
import httpCode from './httpCode';
import router from '../router/index';
import store from '../store/index';

//创建axios实例
var instance = axios.create({ timeout: 1000 * 20 });

// 请求拦截器
instance.interceptors.request.use(
    config => {
        // 登录流程控制中 根据本地是否存在token判断用户的登录情况
        const token = store.state.token;
        token && (config.headers.Authorization = token);
        return config;
    },
    error => Promise.error(error)
)

// 响应拦截器
instance.interceptors.response.use(
    // 请求成功
    res => {
        res.status === 200 ? Promise.resolve(res) : Promise.reject(res)
        //请求成功后改变network状态为true
        store.dispatch('changeNetwork', true);
    },
    // 请求失败
    error => {
        const { response } = error;
        if (response) {
            //请求已发出 不在2xx的范围
            httpCode(response.status)
            return Promise.reject(response);
        } else {
            //处理断网的情况 请求超时或断网时 更新state的network状态
            router.push({ path: '/network' })
            //请求失败后改变network状态为false
            store.dispatch('changeNetwork', false);
        }
    });

export default instance

2、/http/httpCode.js

import router from '../router/index';
import store from '../store/index';
import { Notification } from 'elemen
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值