request.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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 == -1) {
  44. // 图匠图片校验接口超时
  45. return res.data;
  46. } else if (code !== 200) {
  47. Toast({
  48. message: msg,
  49. duration: 5000,
  50. });
  51. } else {
  52. return res.data;
  53. }
  54. },
  55. (error) => {
  56. let { message } = error;
  57. if (message == 'Network Error') {
  58. message = '网络异常';
  59. } else if (message.includes('timeout')) {
  60. message = '请求超时';
  61. } else if (message.includes('Request failed with status code')) {
  62. message = '系统接口' + message.substr(message.length - 3) + '异常';
  63. }
  64. if (error.message === 'canceled') {
  65. console.log('请求被取消:', error.message);
  66. } else {
  67. Toast(message);
  68. }
  69. return Promise.reject(error);
  70. }
  71. );
  72. export default service;