Axios二次封装及使用

开发中把Axios进行二次封装,可以更好的使用Axios的请求拦截器,以及响应拦截器去处理数据

实现代码如下 新建/api/request.js:

/* 对axios进行二次封装 */
import axios from "axios";
// 引入进度条 start 进度条开始  done进度条结束
import nprogress from "nprogress";
//引入 进度条样式
import "nprogress/nprogress.css"

//1. 利用axios对象的方法create方法去创建一个axios实例
// request就是axios,只不过稍微配置一下
const request = axios.create({
    // 基础路径:发请求的时候,路径中会带有api
    baseURL:'/api',
    //代表请求超时的时间为5s
    timeout:5000,
})

// 配置请求拦截器,在请求发出去之前,拦截器可以监测到,可以在请求发出之前做一些事情
 request.interceptors.request.use((config)=>{
    //config 是一个配置对象,对象里有一个属性很重要,就是header请求头
    nprogress.start();
    return config;
 })

 // 响应拦截器
 request.interceptors.response.use((res)=>{
    //响应成功的回调函数,服务器响应数据回来以后,可以做一些事情
    nprogress.done();
    return res.data;
 },(error)=>{
    //响应失败的回调函数
    return error.msg
 })

 export default request;

现在其实以及封装完毕了,需要用的时候可以直接引入使用,但是都做到这一步了,干脆在做个api统一管理 /api/index

//该模块对所有的api进行统一管理

import request from "./request";

// 三级联动接口 get /api/product/getBaseCategoryList 无参数
export const reqCategoryList = ()=>{
    //发送请求,axios返回的结果是Promiss对象
    return request({url:'/product/getBaseCategoryList',method:'get'})
}

使用方法,因为本项目使用了vuex状态管理,所以在需要请求的时候,直接dispatch给action,不使用vuex可以直接调用接口函数即可

    mounted(){
      //通知vuex发请求,获取数据,存储与仓库当中
      this.$store.dispatch('categoryList');
    },

在action中处理:

import {reqCategoryList} from "@/api";

//actions 处理actions,可以写自己的业务,也可以处理异步
const actions = {
    //通过api接口向服务器发送请求
    async categoryList(commit){
        let result = await reqCategoryList();//发送请求
        //commit 向state提交数据,提交的数据就是获取到的数据
        if(result.code == 200){
            this.commit('CATEGORYLIST',result.data)
        }
    }
};

解决请求跨域问题,使用代理服务器

    //代理跨域  只有浏览器有跨域问题  服务器之间没有
    devServer: {
        proxy: {
            '/api':{
                target:'http://39.98.123.211',
                //这里路径不需要重写,因为请求服务器上的路径就带api
                //pathRewrite: { '^/api':''},
            }
        }
    }

文中代码进度条的实现,其实也算是请求拦截器、响应拦截器的使用了。同理动态加载动画也可以通过这种方式实现

上一篇:SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【前端篇】【快速生成后端代码、封装结果集、增删改查、模糊查找】【毕设基础框架】


下一篇:[安全设置] 15步安全强化win2003服务器【红盟安全】