request.js 2.2 KB

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