axios.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import axios from "axios";
  2. import { ElMessage } from 'element-plus'
  3. // 1. 创建axios实例
  4. const instance = axios.create({
  5. // 接口
  6. baseURL: "/api",
  7. // 超时时间
  8. timeout: 50000,
  9. });
  10. // 2.请求拦截
  11. instance.interceptors.request.use(
  12. config => {
  13. let token = sessionStorage.getItem('token')
  14. if (token) {
  15. config.headers['token'] = token
  16. }
  17. return config;
  18. },
  19. error => {
  20. // 请求发生错误,抛出异常
  21. Promise.reject(error);
  22. }
  23. );
  24. // 3.响应拦截
  25. instance.interceptors.response.use(
  26. res => {
  27. return res;
  28. },
  29. error => {
  30. if (error && error.response) {
  31. const status = error.response.status
  32. switch (status) {
  33. case 400:
  34. ElMessage.error("请求错误");
  35. break;
  36. case 401:
  37. ElMessage.error("未授权,请重新登录");
  38. break;
  39. case 403:
  40. ElMessage.error("拒绝访问");
  41. break;
  42. case 404:
  43. ElMessage.error("请求错误,未找到相应的资源");
  44. break;
  45. case 408:
  46. ElMessage.error("请求超时");
  47. break;
  48. case 500:
  49. ElMessage.error("服务器内部错误");
  50. break;
  51. case 501:
  52. ElMessage.error("网络未实现");
  53. break;
  54. case 502:
  55. ElMessage.error("网络错误");
  56. break;
  57. case 503:
  58. ElMessage.error("服务不可用");
  59. break;
  60. case 504:
  61. ElMessage.error("网络超时");
  62. break;
  63. case 505:
  64. ElMessage.error("HTTP版本不支持该请求");
  65. break;
  66. default:
  67. ElMessage.error("请求失败");
  68. }
  69. } else {
  70. if (JSON.stringify(error).includes("timeout")) {
  71. ElMessage.error("服务器响应超时,请刷新页面");
  72. }
  73. ElMessage.error("连接服务器失败");
  74. }
  75. return Promise.reject(error);
  76. }
  77. );
  78. // 4.导出 axios 实例
  79. export default instance;