request_20211209144203.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import axios from 'axios'
  2. import { ElMessage } from 'element-plus'
  3. // import store from '@/store'
  4. import { getToken } from '@/utils/auth'
  5. import qs from 'qs'
  6. // create an axios instance
  7. let baseURL = window.PLATFROM_CONFIG.baseUrl
  8. const service = axios.create({
  9. // baseURL: baseURL,
  10. baseURL: process.env.NODE_ENV !== "development" ? baseURL : process.env.VUE_APP_BASE_URL,
  11. withCredentials: true, // send cookies when cross-domain requests
  12. timeout: 5000, // request timeout
  13. headers: {
  14. 'Content-Type': 'application/json;charset=UTF-8',
  15. },
  16. })
  17. // request interceptor
  18. service.interceptors.request.use(
  19. config => {
  20. config.headers.accessToken = getToken()
  21. if (
  22. config.data &&
  23. config.headers['Content-Type'] ===
  24. 'application/x-www-form-urlencoded;charset=UTF-8'
  25. ) {
  26. config.data = qs.stringify(config.data);
  27. }
  28. // do something before request is sent
  29. // if (store.getters.token) {
  30. // // let each request carry token
  31. // // ['X-Token'] is a custom headers key
  32. // // please modify it according to the actual situation
  33. // config.headers['X-Token'] = getToken()
  34. // }
  35. if (config.method == 'get') {
  36. let ext_str = config.url.indexOf('?') == -1 ? '?' : '&';
  37. let obj_val = '';
  38. for (let k in config.data) {
  39. obj_val += k + "=" + config.data[k] + "&";
  40. }
  41. config.url += ext_str + obj_val;
  42. }
  43. // return config;
  44. return config
  45. },
  46. error => {
  47. // do something with request error
  48. console.log(error) // for debug
  49. return Promise.reject(error)
  50. }
  51. )
  52. // response interceptor
  53. service.interceptors.response.use(
  54. /**
  55. * If you want to get http information such as headers or status
  56. * Please return response => response
  57. */
  58. /**
  59. * Determine the request status by custom code
  60. * Here is just an example
  61. * You can also judge the status by HTTP Status Code
  62. */
  63. response => {
  64. const res = response.data
  65. // console.log(res)
  66. return res
  67. // if the custom code is not 20000, it is judged as an error.
  68. // if (res.code !== 200) {
  69. // Message({
  70. // message: res.message || 'Error',
  71. // type: 'error',
  72. // duration: 5 * 1000
  73. // })
  74. // // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
  75. // if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
  76. // // to re-login
  77. // MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
  78. // confirmButtonText: 'Re-Login',
  79. // cancelButtonText: 'Cancel',
  80. // type: 'warning'
  81. // }).then(() => {
  82. // store.dispatch('user/resetToken').then(() => {
  83. // location.reload()
  84. // })
  85. // })
  86. // }
  87. // return Promise.reject(new Error(res.message || 'Error'))
  88. // } else {
  89. // return res
  90. // }
  91. },
  92. error => {
  93. // console.log('err' + error.response.data.msg) // for debug
  94. ElMessage({
  95. message: error.response.config.url === '/user/login?' ? error.response.data.msg : error.message,
  96. type: 'error',
  97. duration: 5 * 1000
  98. })
  99. return Promise.reject(error)
  100. }
  101. )
  102. export default service