request.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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: 30000,
  13. timeout: 0,
  14. withCredentials: true,
  15. });
  16. // request拦截器
  17. service.interceptors.request.use(
  18. (config) => {
  19. // toastLoading(0, '加载中...', true);
  20. config.headers['userId'] = localStorage.getItem('loginName');
  21. return config;
  22. },
  23. (error) => {
  24. Promise.reject(error);
  25. }
  26. );
  27. // 响应拦截器
  28. service.interceptors.response.use(
  29. (res) => {
  30. // toastLoading().clear();
  31. const code = res.data.code || 200;
  32. const msg = errorCode[code] || res.data.msg || errorCode['default'];
  33. if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
  34. return res.data;
  35. }
  36. if (code === 401) {
  37. Toast('认证信息未通过');
  38. } else if (code === 500) {
  39. // Toast({
  40. // message:msg,
  41. // duration:5000
  42. // });
  43. return res.data;
  44. } else if (code == -1) {
  45. // 图匠图片校验接口超时
  46. return res.data;
  47. } else if (code !== 200) {
  48. Toast({
  49. message: msg,
  50. duration: 5000,
  51. });
  52. } else {
  53. return res.data;
  54. }
  55. },
  56. (error) => {
  57. let { message } = error;
  58. if (message == 'Network Error') {
  59. message = '网络异常';
  60. } else if (message.includes('timeout')) {
  61. message = '请求超时';
  62. } else if (message.includes('Request failed with status code')) {
  63. message = '系统接口' + message.substr(message.length - 3) + '异常';
  64. }
  65. if (error.message === 'canceled') {
  66. console.log('请求被取消:', error.message);
  67. } else {
  68. Toast(message);
  69. }
  70. return Promise.reject(error);
  71. }
  72. );
  73. export default service;