vue中axios的全局配置和自定义配置axios实例


前言

本文主要讨论vue项目中axios的全局配置和自定义配置axios实例。涉及到的内容有:Vue、axios、Element-ui组件库。如果还对axios不了解的,详细可参考axios官方文档

axios官方文档


提示:以下是本篇文章正文内容,下面案例可供参考

一、安装相关插件模块

安装axios:

npm install axios;

安装qs:

npm install qs

安装element:

二、axios的全局配置

1、创建文件

  • src目录下创建network文件夹,在该文件夹下创建axios_config.js文件
  • 文件位置、命名也可以自己定义

在这里插入图片描述

2、导入配置文件

在mian.js文件中导入配置文件

import './network/axios_config'

3、编写配置文件

提示:以下文件配置内容为基础内容可供参考,自己可根据需求添加内容。

import axios from 'axios'
import store from '../store'
//单独引入element的Message组件,以使用
import { Message } from 'element-ui'

//配置基础url、超时时间、post请求头
axios.defaults.baseURL = 'http://xxx.xx.xx.xxx:xxxx';
axios.defaults.timeout = 5000;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

//------------------请求拦截-------------------//
//------------在发送请求之前做些什么------------//
axios.interceptors.request.use(config => {
    //例:若存在token则带token
    const token = store.state.token;
    if (token) {
        config.headers.Authorization = token
    }
    return config;
}, err => {
    console.log("请求拦截=>", err);
    return err;
})

//------------------响应拦截-------------------//
//-------------对响应数据做点什么-------------//
axios.interceptors.response.use(res => {
    console.log("响应拦截=>", res.data);
    //例:后端数据处理错误,并返回错误原因;前端获取错误原因并展示
    if (res.data.success == false) {
        Message({
            message: res.data.data.message + ',请重试!',
            type: 'warning'
        });
    }
    return res ? res.data : res;
}, err => {
    console.log(err);
    //打印完整的错误信息
    console.log("响应拦截错误完整信息=>",err.response)
    //也可以在这里对不同的错误码做不同的展示处理
    throw err;
})

三、创建配置axios实例

当我们一个项目需要访问多个服务地址,而这些服务请求和响应的结构都完全不同,那么就要创建多个axios实例并做相关配置来满足不同的需求

1、创建文件

  • src目录下创建network文件夹,在该文件夹下创建request.js文件
  • 文件位置、命名也可以自己定义
    在这里插入图片描述

3、编写axios实例配置文件

提示:内容可供参考

import axios from 'axios';
import qs from 'qs';
import { Message } from 'element-ui'

//导出request方法,供其它地方使用
export function request(config) {
    const instance = axios.create({
        baseURL: 'http://xxx.xx.xx.xxx:xxxx',
        timeout: 5000,
        // 'transformRequest' 允许在向服务器发送前,修改请求数据
        transformRequest: [function (data) {
            // 对 data 做序列化处理
            return qs.stringify(data);
        }],
    })

    instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';

    //------------------请求拦截-------------------//
    //------------在发送请求之前做些什么------------//
    instance.interceptors.request.use(config => {
        // 若存在token则带token
        const token = window.localStorage.getItem('token');
        if (token) {
            config.headers.Authorization =token;
        }
        // 放行
        return config;
    }, err => {
        console.log("请求拦截=>", err);
        return err;
    })

    //------------------响应拦截-------------------//
    //-------------对响应数据做点什么-------------//
    instance.interceptors.response.use(res => {
        //例:后端数据处理错误,并返回错误原因;前端获取错误原因并展示
        console.log("响应拦截=>", res.data);
        if (res.data.success==false) {
            Message({
                message: res.data.data.message+',请重试!',
                type: 'warning'
            });
        }
        return res ? res.data : res;
    }, err => {
        console.log(err);
        console.log("响应拦截错误完整信息=>",err.response)
        //也可以在这里对不同的错误码做不同的展示处理
        throw err;
    })

    return instance(config);
}

4、使用创建的axios实例

第一步:编写需要的请求函数

举个例子:编写登录接口函数

创建文件

在这里插入图片描述

写接口函数内容
//导入创建好的axios实例
import { request } from './request';

//导出login方法,供其它地方使用
export function login(data) {
    return request({
        url: '/user/login',
        method: 'post',
        data,
    })
}

第二步:在vue页面导入并使用接口函数

<script>
//导入编写好的login方法
import {login} from '../network/login'

export default {
  name: 'Home',
  data() {
    return {
      user:{
        account :1,
        password:1,
      }
    }
  },
  methods: {
  	send() {
      login(this.user).then(res=>{
        //请求成功,做相应处理
      }).catch(err=>{
        //请求失败,做相应处理
      })
  },
}
</script>

提示:文章到此结束,本文仅为个人看法,若有不足欢迎各位指出。

  • 9
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 3,你可以使用axios进行全局配置,以便在整个应用程序共享相同的配置。以下是一个示例: 首先,你需要在Vue项目安装axios。可以使用npm或yarn来安装: ```bash npm install axios ``` 或者 ```bash yarn add axios ``` 接下来,在你的Vue项目创建一个名为`axios.js`的文件(或者你可以选择其他名称),并在其添加以下代码: ```javascript import axios from 'axios'; axios.defaults.baseURL = 'https://api.example.com'; // 设置接口基础路径 axios.defaults.timeout = 5000; // 设置请求超时时间 export default axios; ``` 在上面的代码,我们使用`axios.defaults`对象来设置axios的默认配置。你可以根据需要进行调整,例如设置`baseURL`和`timeout`。 然后,在你的入口文件(通常是main.js)导入该axios配置文件,并将其作为Vue的原型属性进行注册,以便在整个应用程序使用该axios实例。例如: ```javascript import { createApp } from 'vue'; import App from './App.vue'; import axios from './axios'; const app = createApp(App); app.config.globalProperties.$axios = axios; app.mount('#app'); ``` 现在,你可以在任何Vue组件通过`this.$axios`来访问axios实例,并使用它来发送HTTP请求。例如: ```javascript export default { mounted() { this.$axios.get('/users') .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); }, }; ``` 在上面的示例,我们使用`this.$axios.get`方法发送了一个GET请求,并打印了响应数据。你可以根据需要使用其他HTTP方法(如POST、PUT等)来发送请求。 这样,你就可以在整

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值