Vue全局封装axios配置

397 阅读3分钟

在前端开发中,使用Ajax进行数据交互是很常见的需求。而axios是一种流行的JavaScript库,用于发送HTTP请求,并提供了许多强大的功能和特性。将axios进行全局封装的主要目的是为了简化代码、提高开发效率、统一处理请求和响应,以及增强代码的可维护性和可扩展性。

 

以下是一些使用axios进行全局封装的好处:

 

代码复用:通过全局封装axios,可以避免在每个请求中都编写重复的代码。可以将公共配置、拦截器和错误处理等逻辑放在封装的部分中,并在需要发送请求的地方进行调用,从而实现代码的复用。

 

统一处理请求和响应:全局封装的axios可以在发送请求之前和接收响应之后进行拦截和处理。可以在请求拦截器中添加统一的请求头、请求参数处理等逻辑,而在响应拦截器中可以对返回的数据进行统一的处理,例如格式化、错误处理等。这样可以确保在整个应用中请求和响应的处理逻辑是一致的。

 

错误处理:通过全局封装axios,可以集中处理请求过程中的错误。可以在拦截器中捕获错误并进行统一处理,例如统一的错误提示、重试机制、跳转到登录页等。这样可以简化开发过程中对错误的处理,并提高代码的健壮性。

 

可扩展性:全局封装的axios可以方便地进行扩展。可以根据实际需求添加自定义的拦截器、认证机制、缓存策略等。这样可以根据项目的具体情况来定制和增强axios的功能。

 

总而言之,通过对axios进行全局封装,可以提高开发效率、减少重复代码、统一处理请求和响应、简化错误处理,并增强代码的可维护性和可扩展性。这样可以让前端开发更加高效、规范和可靠。

安装axios

npm i axios

步骤

import axios from "axios"

2.创建实列

const service= axios.create({

    baseURL:api.baseURL,//请求地址

    timeout:10000,//超时时间

    headers:{//请求头参数

        'Content-Type': 'application/json',

    }

})

3.创建请求和响应的拦截器

请求拦截器就是在用户请求发起之前的一些操作,如设置token判断请求参数地址等

响应则是请求完成之后的一些操作如错误提示,响应数据处理等

service.interceptors.request.use(config=>{//请求拦截器

    // console.log(config)

    config.headers={

        "Authorization":getToken()//读取token

    }

    return config

   

},err=>{

    console.log(err)

    return Promise.reject(err)

})

 

service.interceptors.response.use(response => {//响应拦击器

    // 对响应数据做些什么

    console.log(router.currentRoute)

    let pathName = router.currentRoute

    if(pathName.name!='login'){

        if(response.data.status==1){

            Message({

                type:"error",

                message:response.data.msg

            })    

       

        }

    }

   

   

    return response.data;

 

  }, error => {

    // 对响应错误做些什么

    console.log(error);

    return Promise.reject(error);

  });

4.导出请求

export default{

    get(url,params){

       return service ({

        method:"get",

        url,

        params,

       })

    },

    post(url,data){

        console.log(data)

        return service ({

            method:"post",

            url,

            data:data

        })

    }

}

5.全据挂载


import http from './util/http';

Vue.prototype.$http = http

在mian.js导入封装的文件并使用Vue.prototype挂载到全局

使用:

this.$http.post(url, this.form).then(res => {

                    console.log(res)

                   

                   

})

如果创建实例的时候写了url,url只需要写后缀/url/xx