request.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. /**
  2. * 封装的axios的工具类
  3. * 负责请求的公共配置,以及请求拦截,响应拦截,错误处理,网络不佳处理
  4. */
  5. import axios from 'axios';
  6. import { Toast, Dialog } from 'vant';
  7. import errorCode from '@/utils/errorCode';
  8. import { toastLoading } from '@/utils/commonVant';
  9. axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8';
  10. const service = axios.create({
  11. baseURL: process.env.VUE_APP_BASE_API,
  12. timeout: 0, //30000
  13. withCredentials: true,
  14. });
  15. // request拦截器
  16. service.interceptors.request.use(
  17. (config) => {
  18. toastLoading(0, '加载中...', true);
  19. config.headers['userId'] = localStorage.getItem('loginName');
  20. return config;
  21. },
  22. (error) => {
  23. Promise.reject(error);
  24. }
  25. );
  26. // 响应拦截器
  27. service.interceptors.response.use(
  28. (res) => {
  29. toastLoading().clear();
  30. const code = res.data.code || 200;
  31. const msg = errorCode[code] || res.data.msg || errorCode['default'];
  32. if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
  33. return res.data;
  34. }
  35. if (code === 401) {
  36. Toast('认证信息未通过');
  37. } else if (code === 500) {
  38. // Toast({
  39. // message:msg,
  40. // duration:5000
  41. // });
  42. return res.data;
  43. } else if (code !== 200) {
  44. Toast({
  45. message: msg,
  46. duration: 5000,
  47. });
  48. } else {
  49. return res.data;
  50. }
  51. },
  52. (error) => {
  53. let { message } = error;
  54. if (message == 'Network Error') {
  55. message = '网络异常';
  56. } else if (message.includes('timeout')) {
  57. message = '请求超时';
  58. } else if (message.includes('Request failed with status code')) {
  59. message = '系统接口' + message.substr(message.length - 3) + '异常';
  60. }
  61. if (error.message === 'canceled') {
  62. console.log('请求被取消:', error.message);
  63. } else {
  64. Toast(message);
  65. }
  66. return Promise.reject(error);
  67. }
  68. );
  69. export default service;