You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
2.9 KiB

1 month ago
4 weeks ago
1 month ago
4 weeks ago
1 month ago
4 weeks ago
1 month ago
4 weeks ago
  1. import axios from 'axios'
  2. import { ElMessage } from 'element-plus'
  3. const ERROR_MESSAGES = {
  4. badRequest: '请求错误(400)',
  5. unauthorized: '未授权,请登录(401)',
  6. forbidden: '拒绝访问(403)',
  7. notFound: `请求地址出错: ${'[具体 URL 将在这里被替换]'}`,
  8. methodNotAllowed: '请求方法未允许(405)',
  9. requestTimeout: '请求超时(408)',
  10. internalServerError: '服务器内部错误(500)',
  11. notImplemented: '服务未实现(501)',
  12. badGateway: '网络错误(502)',
  13. serviceUnavailable: '服务不可用(503)',
  14. gatewayTimeout: '网络超时(504)',
  15. httpVersionNotSupported: 'HTTP 版本不受支持(505)',
  16. defaultConnectionError: '连接错误: [原始错误消息]',
  17. networkError: '网络异常,请检查后重试!',
  18. serverFailure: '连接到服务器失败,请联系管理员'
  19. }
  20. const service = axios.create({
  21. baseURL: '/api', // 使用代理路径作为baseURL
  22. // timeout: 50000,
  23. withCredentials: false // send cookies when cross-domain requests
  24. // headers: {
  25. // // clear cors
  26. // 'Cache-Control': 'no-cache',
  27. // Pragma: 'no-cache'
  28. // }
  29. })
  30. const setErrorMsg = (error) => {
  31. if (error && error.response) {
  32. switch (error.response.status) {
  33. case 400:
  34. error.message = ERROR_MESSAGES.badRequest
  35. break
  36. case 401:
  37. error.message = ERROR_MESSAGES.unauthorized
  38. break
  39. case 403:
  40. error.message = ERROR_MESSAGES.forbidden
  41. break
  42. case 404:
  43. error.message = ERROR_MESSAGES.notFound.replace(
  44. '[具体 URL 将在这里被替换]',
  45. error.response.config.url
  46. )
  47. break
  48. case 405:
  49. error.message = ERROR_MESSAGES.methodNotAllowed
  50. break
  51. case 408:
  52. error.message = ERROR_MESSAGES.requestTimeout
  53. break
  54. case 500:
  55. error.message = ERROR_MESSAGES.internalServerError
  56. break
  57. case 501:
  58. error.message = ERROR_MESSAGES.notImplemented
  59. break
  60. case 502:
  61. error.message = ERROR_MESSAGES.badGateway
  62. break
  63. case 503:
  64. error.message = ERROR_MESSAGES.serviceUnavailable
  65. break
  66. case 504:
  67. error.message = ERROR_MESSAGES.gatewayTimeout
  68. break
  69. case 505:
  70. error.message = ERROR_MESSAGES.httpVersionNotSupported
  71. break
  72. default:
  73. error.message = ERROR_MESSAGES.defaultConnectionError.replace(
  74. '[原始错误消息]',
  75. error.message
  76. )
  77. }
  78. } else {
  79. if (error.message === 'Network Error') {
  80. error.message = ERROR_MESSAGES.networkError
  81. } else {
  82. error.message = ERROR_MESSAGES.serverFailure
  83. }
  84. }
  85. return error.message
  86. }
  87. // Request interceptors
  88. service.interceptors.request.use(
  89. (config) => {
  90. // 在此处添加请求头等,如添加 token
  91. // if (store.state.token) {
  92. // config.headers['Authorization'] = `Bearer ${store.state.token}`
  93. // }
  94. return config
  95. },
  96. (error) => {
  97. return Promise.reject(error)
  98. }
  99. )
  100. // 响应拦截器(简化版)
  101. service.interceptors.response.use(
  102. response => response.data,
  103. error => {
  104. ElMessage.error(error.message || '请求错误')
  105. return Promise.reject(error)
  106. }
  107. )
  108. export default service