一、前言
1. 项目背景与目标
- Axios 的重要性:
2. 环境搭建
-
开发工具准备:
- 推荐使用 VSCode 或 WebStorm。
- 安装必要的扩展如 Vetur(Vue 支持)、ESLint 等。
-
Axios 安装与配置:
import axios from 'axios';// 创建 Axios 实例 const instance = axios.create({baseURL: 'https://api.example.com',timeout: 1000, });export default instance;
Axios__28">二、Axios 基础
Axios__30">1. Axios 简介
-
Axios 的特点与优势:
- 基于 Promise 的 API,易于使用。
- 支持浏览器和 Node.js。
- 自动转换 JSON 数据。
- 客户端支持防止 CSRF。
-
安装与引入:
2. 基本用法
-
发送 GET 请求:
axios.get('/users').then(response => {console.log(response.data);}).catch(error => {console.error('Error fetching users:', error);});
-
发送 POST 请求:
axios.post('/users', { name: 'John' }).then(response => {console.log('User created:', response.data);}).catch(error => {console.error('Error creating user:', error);});
-
处理响应数据:
- 使用
.then()
处理成功响应。 - 使用
.catch()
处理错误。
axios.get('/users').then(response => {console.log('Data:', response.data);}).catch(error => {console.error('Error:', error);});
- 使用
三、高级特性
1. 拦截器
-
请求拦截器:
- 在请求发送前进行处理。
axios.interceptors.request.use(config => {console.log('Request sent:', config);return config;},error => {console.error('Request error:', error);return Promise.reject(error);} );
-
响应拦截器:
- 在接收到响应后进行处理。
axios.interceptors.response.use(response => {console.log('Response received:', response);return response;},error => {console.error('Response error:', error);return Promise.reject(error);} );
2. 并发请求
- 使用
axios.all
和axios.spread
:axios.all([axios.get('/users'),axios.get('/posts') ]) .then(axios.spread((usersResponse, postsResponse) => {console.log('Users:', usersResponse.data);console.log('Posts:', postsResponse.data); })) .catch(error => {console.error('Error:', error); });
3. 取消请求
- 使用
CancelToken
取消请求:import axios from 'axios';const CancelToken = axios.CancelToken; let cancel;axios.get('/users', {cancelToken: new CancelToken(function executor(c) {cancel = c;}) }) .then(response => {console.log(response.data); }) .catch(error => {if (axios.isCancel(error)) {console.log('Request canceled', error.message);} else {console.error('Error:', error);} });// 取消请求 cancel('Operation canceled by the user.');
4. 超时设置
- 设置请求超时时间:
axios.get('/users', {timeout: 5000 }) .then(response => {console.log(response.data); }) .catch(error => {console.error('Error:', error); });
四、状态管理与数据流
1. Vuex 状态管理模式
- 创建 Vuex Store:
// store/index.js import Vue from 'vue'; import Vuex from 'vuex';Vue.use(Vuex);export default new Vuex.Store({state: {users: []},mutations: {SET_USERS(state, users) {state.users = users;}},actions: {fetchUsers({ commit }) {axios.get('/users').then(response => {commit('SET_USERS', response.data);}).catch(error => {console.error('Error fetching users:', error);});}} });
Axios__211">2. 结合 Axios 进行异步操作
- 在 Vuex Actions 中调用 Axios:
// UserList.vue <template><div><h1>User List</h1><ul><li v-for="user in u