request_20211208174807.js 3.5 KB

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