request.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import axios from 'axios';
  2. import store from '$project/store';
  3. import router from '@/router';
  4. import Vue from 'vue';
  5. import Qs from 'qs';
  6. import $ from 'jquery';
  7. import {
  8. getToken,
  9. getOpenId
  10. } from '$project/utils/storage'
  11. axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded'
  12. //检测是否可以访问通
  13. var BACKEND_URL = process.env.VUE_APP_BACKEND_URL;
  14. if (process.env.VUE_APP_NODE_NAME == 'devlopment') {
  15. // BACKEND_URL='http://192.168.33.120:8086/shinestar-server';
  16. // BACKEND_URL='http://192.168.33.90:8086/shinestar-server';
  17. BACKEND_URL="https://ykt-test.xiaoxinda.com/shinestar-server/"
  18. //BACKEND_URL='http://223.75.170.44:6060/shinestar-server';
  19. }
  20. //var BACKEND_URL = 'http://192.168.33.120:8086/shinestar-server'
  21. //http://223.75.170.44:6060/shinestar-server
  22. // 创建axios实例
  23. const service = axios.create({
  24. baseURL: BACKEND_URL,
  25. timeout: 20000,
  26. // 请求头信息
  27. headers: {
  28. 'Content-Type': 'application/x-www-form-urlencoded',
  29. 'X-Requested-With': 'XMLHttpRequest',
  30. },
  31. });
  32. //request拦截器
  33. service.interceptors.request.use(config => {
  34. let Authorization = getToken() ? getToken() : '';
  35. config.headers['Authorization'] = Authorization;
  36. return config;
  37. }, error => {
  38. //对请求错误处理
  39. return Promise.reject(error);
  40. });
  41. // response拦截器
  42. service.interceptors.response.use(
  43. response => {
  44. if (response.data.code === 200) {
  45. if (response.data.result) {
  46. return Promise.resolve(response.data.data);
  47. } else {
  48. return Promise.reject(response.data.message);
  49. }
  50. } else if (response.data.code === 415) {
  51. //这里不执行,token过期
  52. } else {
  53. //无code的情况
  54. if (response.data.result) {
  55. return Promise.resolve(response.data.data);
  56. } else {
  57. return Promise.reject(response.data.message);
  58. }
  59. // todo 根据返回值判定去向,比如token过期,未登录等等
  60. // 403 接口需要登录
  61. /* if (response.data.code === 403) {
  62. store.dispatch('clearToken');
  63. router.replace({
  64. name: 'Login',
  65. query: {
  66. redirect: router.currentRoute.fullPath
  67. }
  68. });
  69. } */
  70. return Promise.reject(response.data.message);
  71. }
  72. },
  73. error => {
  74. // alert('网络超时!请重新加载!');
  75. //console.error(error);
  76. // 判断请求异常信息中是否含有超时timeout字符串
  77. if (error.message.includes('timeout')) {
  78. return Promise.reject('请求超时,请稍后再试');
  79. } else if (error.message.includes('NetworkError')) {
  80. return Promise.reject('网络错误,请稍后再试');
  81. }
  82. return Promise.reject(error);
  83. }
  84. );
  85. export default service;