default-config.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. export const defaultAxiosConfig = (axios) => {
  2. axios.interceptors.request.use(config => {
  3. // 此代码用于支持 get 修改content-type [注: axios的get请求默认不支持content-type修改]
  4. if (config.method === 'get') config.data = true
  5. return config
  6. }, err => Promise.reject(err))
  7. axios.interceptors.response.use(
  8. response => {
  9. if (response?.data && typeof response.data === 'object' && process.env.NODE_ENV === 'development') {
  10. response.data.$config = response.config
  11. }
  12. return response
  13. },
  14. err => {
  15. if (err.__CANCEL__) {
  16. err.message = '请求已取消'
  17. }
  18. if (err && err.code) {
  19. if (err.code === 'ECONNABORTED') {
  20. err.message = '请求超时'
  21. }
  22. }
  23. if (err && err.response) {
  24. const status = err.response.status
  25. const errorMessage =
  26. err.response?.data?.data?.message ||
  27. err.response?.data?.message
  28. switch (status) {
  29. case 400:
  30. err.message = errorMessage
  31. break
  32. case 401:
  33. err.message = errorMessage
  34. break
  35. case 403:
  36. err.message = errorMessage
  37. break
  38. case 404:
  39. err.message = errorMessage || `请求地址出错: ${err.response.config.url}`
  40. break
  41. case 408:
  42. err.message = errorMessage || '请求超时'
  43. break
  44. case 500:
  45. err.message = errorMessage || '服务器内部错误'
  46. break
  47. case 501:
  48. err.message = errorMessage || '服务未实现'
  49. break
  50. case 502:
  51. err.message = errorMessage || '网关错误'
  52. break
  53. case 503:
  54. err.message = errorMessage || '服务不可用'
  55. break
  56. case 504:
  57. err.message = errorMessage || '网关超时'
  58. break
  59. case 505:
  60. err.message = errorMessage || 'HTTP版本不受支持'
  61. break
  62. default:
  63. err.message = errorMessage || '未知的错误'
  64. }
  65. }
  66. return Promise.reject(err)
  67. }
  68. )
  69. }