request_20211209141743.js 3.7 KB

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