request.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. export const getHeaders = () => {
  9. const headers: {
  10. 'x-auth-token'?: string,
  11. } = {};
  12. const token = localStorage.getItem(ELocalStorageKey.Token)
  13. if (token) {
  14. headers['x-auth-token'] = token;
  15. }
  16. return headers;
  17. };
  18. const instance = axios.create({
  19. headers: {
  20. 'Content-Type': 'application/json',
  21. },
  22. })
  23. instance.interceptors.request.use(
  24. config => {
  25. config.headers = getHeaders();
  26. config.baseURL = '/api';
  27. return config
  28. },
  29. error => {
  30. return Promise.reject(error)
  31. },
  32. )
  33. instance.interceptors.response.use(
  34. response => {
  35. if (response.data.code && response.data.code !== 0) {
  36. message.error(response.data.message)
  37. }
  38. return response
  39. },
  40. err => {
  41. const requestId = err?.config?.headers && err?.config?.headers[REQUEST_ID]
  42. if (requestId) {
  43. console.info(REQUEST_ID, ':', requestId)
  44. }
  45. let description = '-'
  46. if (err.response?.data && err.response.data.message) {
  47. description = err.response.data.message
  48. }
  49. if (err.response?.data && err.response.data.result) {
  50. description = err.response.data.result.message
  51. }
  52. // @See: https://github.com/axios/axios/issues/383
  53. if (!err.response || !err.response.status) {
  54. message.error('服务异常')
  55. return
  56. }
  57. if (err.response?.status !== 200) {
  58. message.error(`ERROR_CODE: ${err.response?.status}`)
  59. }
  60. // if (err.response?.status === 403) {
  61. // // window.location.href = '/'
  62. // }
  63. if (err.response?.status === 401) {
  64. console.error(err.response)
  65. const flag: number = Number(localStorage.getItem(ELocalStorageKey.Flag))
  66. switch (flag) {
  67. case EUserType.Web:
  68. router.push(ERouterName.PROJECT)
  69. break
  70. case EUserType.Pilot:
  71. router.push(ERouterName.PILOT)
  72. break
  73. }
  74. }
  75. return Promise.reject(err)
  76. },
  77. )
  78. export default instance