可以查看axios的中文文档,地址如下
https://www.axios-http.cn/

为什么要对axios进行二次封装:

由于自带的axios不能满足我们的需求,需要对其进行二次封装,方便程序员使用

  1. // 引入axios
  2. import axios from 'axios'
  3. // @ts-ignore
  4. import { ElMessage } from "element-plus";
  5. import (GET_TOKEN) from './token.ts'
  6. // 第一步:利用axios对象的create方法,去创建axios实例(其他的配置:基础路径、超时时间)
  7. const requeset = axios.create({
  8. // 基础路径
  9. baseURL: import.meta.env.VITE_APP_BASE_API,//后期可以换成自己的项目地址
  10. // 设置超时时间
  11. timeout: 5000,
  12. })
  13. // // 第二步:给request实例添加请求拦截器
  14. requeset.interceptors.request.use((config)=>{
  15. //获取token
  16. const token = GET_TOKEN()
  17. if(token){
  18. config.header.token = token
  19. }
  20. // 返回配置对象
  21. return config;
  22. })
  23. // 第三步:给request实例添加响应拦截器
  24. requeset.interceptors.response.use((response)=>{
  25. // 成功的回调
  26. // 简化数据
  27. return response.data
  28. },
  29. (error)=>{
  30. // 失败的回调:处理http网络错误
  31. // 定义一个变量,存储网络错误信息
  32. let message = '';
  33. // http状态码
  34. let status = error.response.status
  35. switch(status){
  36. case 401:
  37. message = 'TOKEN过期';
  38. break;
  39. case 403:
  40. message = '无权访问';
  41. break;
  42. case 404:
  43. message = '请求地址错误';
  44. break;
  45. case 500:
  46. message = '服务器出现问题';
  47. break;
  48. default:
  49. message = '网络出现错误';
  50. break;
  51. }
  52. // 提示错误信息
  53. ElMessage({
  54. type:'error',
  55. message
  56. })
  57. return Promise.reject(error);
  58. }
  59. )
  60. // 对外暴露
  61. export default requeset;