http.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. // http/index.js
  2. import axios from 'axios'
  3. import router from "@/router"; //根路由对象
  4. import lang from '../i18n/i18n';
  5. //创建axios的一个实例
  6. var $http = axios.create({
  7. baseURL: import.meta.env.VITE_APP_URL, //接口统一域名
  8. timeout: 6000, //设置超时
  9. headers: {
  10. 'Content-Type': 'application/json;charset=UTF-8;',
  11. 'Lang': lang.lang
  12. }
  13. })
  14. //请求拦截器
  15. $http.interceptors.request.use((config) => {
  16. //若请求方式为post,则将data参数转为JSON字符串
  17. if (config.method === 'POST') {
  18. config.data = JSON.stringify(config.data);
  19. }
  20. return config;
  21. }, (error) =>
  22. // 对请求错误做些什么
  23. Promise.reject(error));
  24. //响应拦截器
  25. $http.interceptors.response.use((response) => {
  26. //响应成功
  27. if (response.data.errorNo == 403) {
  28. router.replace({
  29. path: '/login',
  30. query: {
  31. redirect: router.currentRoute.fullPath
  32. }
  33. })
  34. }
  35. //响应成功
  36. if (response.data.errorNo == 402) {
  37. router.replace({
  38. path: '/setup',
  39. query: {
  40. redirect: router.currentRoute.fullPath
  41. }
  42. })
  43. }
  44. return response.data;
  45. }, (error) => {
  46. //响应错误
  47. if (error.response && error.response.status) {
  48. const status = error.response.status
  49. let message = ""
  50. switch (status) {
  51. case 400:
  52. message = '请求错误';
  53. break;
  54. case 401:
  55. message = '请求错误';
  56. break;
  57. case 403:
  58. router.replace({
  59. path: '/login',
  60. query: {
  61. redirect: router.currentRoute.fullPath
  62. }
  63. })
  64. break;
  65. case 404:
  66. message = '请求地址出错';
  67. break;
  68. case 408:
  69. message = '请求超时';
  70. break;
  71. case 500:
  72. message = '服务器内部错误!';
  73. break;
  74. case 501:
  75. message = '服务未实现!';
  76. break;
  77. case 502:
  78. message = '网关错误!';
  79. break;
  80. case 503:
  81. message = '服务不可用!';
  82. break;
  83. case 504:
  84. message = '网关超时!';
  85. break;
  86. case 505:
  87. message = 'HTTP版本不受支持';
  88. break;
  89. default:
  90. message = '请求失败'
  91. }
  92. return Promise.reject(error);
  93. }
  94. return Promise.reject(error);
  95. });
  96. export default $http;