Vue.js使用Axios手把手教程

www.jswusn.com Other 2025-03-20 09:52:08 32次浏览

以下是将在Vue.js中使用Axios的详细步骤,涵盖从安装到实际使用的完整流程:

在Vue.js中使用Axios的详细步骤

1. 安装 Axios

在 Vue.js 项目中安装 Axios,可以使用 npm 或 yarn。

# 使用 npm 安装
npm install axio
# 使用 yarn 安装
yarn add axios

2. 在 Vue 组件中使用 Axios

在 Vue 组件中直接引入并使用 Axios 发起请求。

示例:发起 GET 请求

<template> 
  <div> 
    <h1>用户列表</h1> 
    <ul>    
      <li v-for="user in users" :key="user.id">{{ user.name }}</li> 
    </ul> 
  </div>
</template>
<script>
import axios from 'axios';
export default {  
  data() {  
    return {  
      users: [], // 存储用户数据  
    };
  }, 
  mounted() {  
    // 在组件挂载时发起 GET 请求    
    axios.get('https://www.yourdomain.com/users')     
        .then(response => {     
          this.users = response.data; // 将响应数据赋值给 users
        })    
        .catch(error => {   
          console.error('请求失败:', error);   
        });
    },
};
</script>

示例:发起 POST 请求

<template> 
  <div>  
    <h1>添加用户</h1>  
    <form @submit.prevent="addUser">   
      <input v-model="newUser.name" placeholder="用户名" />   
      <button type="submit">添加</button> 
    </form> 
  </div>
</template>
<script>
import axios from 'axios';
export default {  
  data() {    
    return {  
      newUser: {  
        name: '', // 新用户的名字    
      },  
    };
  },  
  methods: {  
    addUser() {     
      // 发起 POST 请求    
      axios.post('https://www.yourdomain.com/users', this.newUser)   
          .then(response => {        
            console.log('用户添加成功:', response.data);   
          })    
          .catch(error => {    
            console.error('添加用户失败:', error);   
          });   
      }, 
  },
};
</script>

3. 全局配置 Axios

在 Vue 项目中,通常会将 Axios 配置为全局实例,以便在所有组件中共享配置。

在 main.js 中配置 Axios

import Vue from 'vue';
import App from './App.vue';
import axios from 'axios';
// 设置 Axios 的全局默认配置
axios.defaults.baseURL = 'https://www.yourdomain.com'; // 基础 URL
axios.defaults.headers.common['Authorization'] = 'Bearer token'; // 全局请求头
axios.defaults.timeout = 5000; // 超时时间
// 将 Axios 挂载到 Vue 原型上,方便在组件中使用
Vue.prototype.$axios = axios;
new Vue({  
  render: h => h(App),
}).$mount('#app');

在组件中使用全局 Axios 实例

<template>  
  <div>   
    <h1>用户列表</h1> 
    <ul>    
      <li v-for="user in users" :key="user.id">{{ user.name }}</li>  
    </ul> 
  </div>
</template>
<script>
export default {  
  data() {    
    return {      
      users: [], 
    }; 
  }, 
  mounted() { 
    // 使用全局 Axios 实例发起请求  
    this.$axios.get('/users')   
        .then(response => {     
          this.users = response.data;   
        })   
        .catch(error => {    
          console.error('请求失败:', error);   
        }); 
    },
};
</script>

4. 使用 Axios 拦截器

Axios 拦截器可以在请求发送前或响应返回后执行一些操作,例如添加请求头、处理错误等。

请求拦截器

axios.interceptors.request.use(  
    config => {    
      // 在请求发送前添加请求头  
      config.headers.Authorization = 'Bearer token'; 
      return config;  
      },  
    error => {   
      return Promise.reject(error); 
    }
);

响应拦截器

axios.interceptors.response.use(  
    response => {  
      // 对响应数据进行处理   
      return response; 
    }, 
    error => {    
      // 处理响应错误  
      if (error.response.status === 401) {  
        console.error('未授权,请重新登录');   
      }   
      return Promise.reject(error); 
    }
);

5. 封装 Axios 请求

为了提高代码的可维护性,可以将 Axios 请求封装到一个单独的文件中。

创建 api.js 文件

import axios from 'axios';
const apiClient = axios.create({ 
  baseURL: 'https://www.yourdomain.com',  
  headers: {  
    'Content-Type': 'application/json',
  },
});
export default {  
  getUsers() {   
    return apiClient.get('/users'); 
  }, 
  addUser(user) {  
    return apiClient.post('/users', user); 
    },
};

在组件中使用封装的 API

<template>  
  <div>  
    <h1>用户列表</h1>  
    <ul>  
      <li v-for="user in users" :key="user.id">{{ user.name }}</li>
    </ul>
  </div>
</template>
<script>
import api from '@/api'; // 导入封装的 API
export default { 
  data() {   
    return {    
      users: [],  
    };  
  }, 
  mounted() { 
    api.getUsers()   
        .then(response => {   
          this.users = response.data; 
        })  
        .catch(error => {   
          console.error('请求失败:', error);   
        }); 
    },
};
</script>

6. 处理加载状态与错误提示

在请求过程中,通常需要显示加载状态或错误提示。

示例:处理加载状态与错误

<template> 
  <div> 
    <h1>用户列表</h1>  
    <div v-if="loading">加载中...</div>  
    <div v-if="error">加载失败,请重试。</div>  
    <ul>  
      <li v-for="user in users" :key="user.id">{{ user.name }}</li>  
    </ul>  
  </div>
</template>
<script>
import axios from 'axios';
export default { 
  data() {  
    return {   
      users: [],   
      loading: false,    
      error: false,  
    };  
  },  
  mounted() { 
    this.loading = true;   
    axios.get('https://www.yourdomain.com/users')   
        .then(response => {     
          this.users = response.data;      
          this.loading = false;   
        })  
        .catch(error => {     
          console.error('请求失败:', error);       
          this.error = true;     
          this.loading = false;  
        });  
    },
};
</script>

7. 总结

通过以上步骤,你可以在 Vue.js 项目中轻松集成 Axios,并实现以下功能:

发起 GET 和 POST 请求

全局配置 Axios

使用拦截器处理请求和响应

封装 Axios 请求以提高代码复用性

处理加载状态与错误提示


技术分享

苏南名片

  • 联系人:吴经理
  • 电话:152-1887-1916
  • 邮箱:message@jswusn.com
  • 地址:江苏省苏州市相城区

热门文章

Copyright © 2018-2025 jswusn.com 版权所有

技术支持:苏州网站建设  苏ICP备18036849号