健康同学微信公众号h5项目
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

59 líneas
1.4KB

  1. import axios from 'axios';
  2. import store from '@/store';
  3. import { Toast } from 'vant';
  4. // 根据环境不同引入不同api地址
  5. import { baseApi } from '@/config';
  6. // create an axios instance
  7. const service = axios.create({
  8. baseURL: baseApi, // url = base api url + request url
  9. withCredentials: true, // send cookies when cross-domain requests
  10. timeout: 5000 // request timeout
  11. });
  12. // request拦截器 request interceptor
  13. service.interceptors.request.use(
  14. config => {
  15. // 不传递默认开启loading
  16. if (!config.hideloading) {
  17. // loading
  18. Toast.loading({
  19. forbidClick: true
  20. });
  21. }
  22. if (store.getters.token) {
  23. config.headers['X-Token'] = '';
  24. }
  25. return config;
  26. },
  27. error => {
  28. // do something with request error
  29. console.log(error); // for debug
  30. return Promise.reject(error);
  31. }
  32. );
  33. // respone拦截器
  34. service.interceptors.response.use(
  35. response => {
  36. Toast.clear();
  37. const res = response.data;
  38. if (res.status && res.status !== 200) {
  39. // 登录超时,重新登录
  40. if (res.status === 401) {
  41. store.dispatch('FedLogOut').then(() => {
  42. location.reload();
  43. });
  44. }
  45. return Promise.reject(res || 'error');
  46. } else {
  47. return Promise.resolve(res);
  48. }
  49. },
  50. error => {
  51. Toast.clear();
  52. console.log('err' + error); // for debug
  53. return Promise.reject(error);
  54. }
  55. );
  56. export default service;