request.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import axios from 'axios'
  2. import { CURRENT_CONFIG } from './config'
  3. import { message } from 'ant-design-vue'
  4. import router from '/@/router'
  5. import { ELocalStorageKey, ERouterName, EUserType } from '/@/types/enums'
  6. export * from './type'
  7. const REQUEST_ID = 'X-Request-Id'
  8. function getAuthToken() {
  9. return localStorage.getItem(ELocalStorageKey.Token)
  10. }
  11. const instance = axios.create({
  12. headers: {
  13. 'Content-Type': 'application/json',
  14. },
  15. })
  16. instance.interceptors.request.use(
  17. config => {
  18. config.headers[ELocalStorageKey.Token] = getAuthToken()
  19. config.baseURL = CURRENT_CONFIG.baseURL
  20. return config
  21. },
  22. error => {
  23. return Promise.reject(error)
  24. },
  25. )
  26. instance.interceptors.response.use(
  27. response => {
  28. console.info('URL: ' + response.config.baseURL + response.config.url, '\nData: ', response.data, '\nResponse:', response)
  29. if (response.data.code && response.data.code !== 0) {
  30. message.error(response.data.message)
  31. }
  32. return response
  33. },
  34. err => {
  35. const requestId = err?.config?.headers && err?.config?.headers[REQUEST_ID]
  36. if (requestId) {
  37. console.info(REQUEST_ID, ':', requestId)
  38. }
  39. console.info('url: ', err?.config?.url, `【${err?.config?.method}】 \n>>>> err: `, err)
  40. let description = '-'
  41. if (err.response?.data && err.response.data.message) {
  42. description = err.response.data.message
  43. }
  44. if (err.response?.data && err.response.data.result) {
  45. description = err.response.data.result.message
  46. }
  47. // @See: https://github.com/axios/axios/issues/383
  48. if (!err.response || !err.response.status) {
  49. message.error('服务异常')
  50. return
  51. }
  52. if (err.response?.status !== 200) {
  53. message.error(`ERROR_CODE: ${err.response?.status}`)
  54. }
  55. // if (err.response?.status === 403) {
  56. // // window.location.href = '/'
  57. // }
  58. if (err.response?.status === 401) {
  59. console.error(err.response)
  60. const flag: number = Number(localStorage.getItem(ELocalStorageKey.Flag))
  61. switch (flag) {
  62. case EUserType.Web:
  63. router.push(ERouterName.PROJECT)
  64. break
  65. case EUserType.Pilot:
  66. router.push(ERouterName.PILOT)
  67. break
  68. }
  69. }
  70. return Promise.reject(err)
  71. },
  72. )
  73. export default instance