1.基本用法
1.安装axios
npm install axios
yarn add axios
2.发起请求
axios.get('/user?ID=12345').then(response => {console.log(response.data);}).catch(error => {console.log(error);});
axios.post('/user', {firstName: 'Fred',lastName: 'Flintstone'}).then(response => {console.log(response);}).catch(error => {console.log(error);});
2.高级配置
1.请求配置
axios({method: 'post',url: '/user/12345',data: {firstName: 'Fred',lastName: 'Flintstone'},headers: {'X-Requested-With': 'XMLHttpRequest'},timeout: 1000,responseType: 'json'
});
2.全局配置
axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
3.拦截器
1.请求拦截器
axios.interceptors.request.use(config => {config.headers.Authorization = 'Bearer token';return config;
}, error => {return Promise.reject(error);
});
2.响应拦截器
axios.interceptors.response.use(response => {return response.data;
}, error => {return Promise.reject(error);
});
4.并发请求
function getUserAccount() {return axios.get('/user/12345');
}function getUserPermissions() {return axios.get('/user/12345/permissions');
}Promise.all([getUserAccount(), getUserPermissions()]).then(results => {const acct = results[0];const perm = results[1];});
5.错误处理
axios.get('/user/12345').catch(error => {if (error.response) {console.log(error.response.data);console.log(error.response.status);console.log(error.response.headers);} else if (error.request) {console.log(error.request);} else {console.log('Error', error.message);}console.log(error.config);});
6.axios封装
import axios from 'axios';
const service = axios.create({baseURL: process.env.BASE_API || '/api',timeout: 10000, withCredentials: true
});
service.interceptors.request.use(config => {const token = localStorage.getItem('token');if (token) {config.headers['Authorization'] = `Bearer ${token}`;}return config;},error => {console.error('请求拦截器错误:', error);return Promise.reject(error);}
);
service.interceptors.response.use(response => {const res = response.data;if (res.code !== 0) {console.error('业务错误:', res.message);return Promise.reject(new Error(res.message || 'Error'));} else {return res;}},error => {console.error('响应错误:', error);if (error.response) {switch (error.response.status) {case 401:console.error('未授权,请重新登录');break;case 403:console.error('拒绝访问');break;case 404:console.error('资源不存在');break;case 500:console.error('服务器错误');break;default:console.error('未知错误');}}return Promise.reject(error);}
);
export default service;
import request from '@/utils/request';
export const getUserInfo = (id) => {return request({url: `/user/${id}`,method: 'get'});
};export const updateUserInfo = (data) => {return request({url: '/user/update',method: 'post',data});
};
export const getProductList = (params) => {return request({url: '/products',method: 'get',params});
};export const createProduct = (data) => {return request({url: '/products',method: 'post',data});
};