vue axios封装

前言:

对第三方库进行二次封装和抽离到统一模块,项目面对自己的模块进行开发。如果有一天更换库,只需要修改自己模块中的代码,无需对整个项目进行重构。

将axios网络请求库封装到network文件下的request.js中,项目中所有网络请求相关,全部面对request.js开发。


 

一、vue目录结构

 

二、封装

import axios from "axios"

// 如果换axios框架,只需本页去掉axios相关,导入最新框架,return new Promise()就可以,项目中其他文件依旧正常使用
export function request(config) {
    const instance = axios.create({
      baseURL: 'http://123.207.32.32:8000',
      timeout: 5000
    });

  // 2. 拦截器(拦截之后进行对应操作,完成操作后需要返回回去)
  // 2.1请求拦截
    instance.interceptors.request.use(success =>{
      // 一般做1. 每次网络请求的时候都希望在界面中显示一个请求图标
                  //  2. 某些网络请求(比如登录(token)),必须携带一些特殊的信息 
      console.log(success);
      return success   // 操作完成后返回回去,不然main里面拿不到
    },err =>{
      // 发不出去请求的时候到这里,一般不会出现
      console.log(err)
    })
    
    //  2.2  响应拦截
    instance.interceptors.response.use(res =>{
      console.log('响应拦截');
      console.log(res.data);
      return res.data
    },err =>{
      console.log('拦截服务器响应错误')
      console.log(err)
    })

    // 发送网络请求
    return instance(config)
}

 

三、使用

// 需要网络请求的地方导入,使用
import {request} from "./network/request";

request({
  // url: '/home/multidata/aaaaaaaaaaaaa'         // 错误请求测试
  url: '/home/multidata'

}).then(res =>{
  console.log('main里面',res);
}).catch(err =>{
  console.log("main里面",err);
})

 

posted @ 2020-02-18 16:48  zwnsyw  阅读(507)  评论(0编辑  收藏  举报