axiosPlugin.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /**
  2. * @file Axios的Vue插件(添加全局请求/响应拦截器)
  3. */
  4. import {DEVICE_TYPE, REQUEST_URL} from './config'
  5. import axios from 'axios'
  6. import UAParser from 'ua-parser-js'
  7. // 获得操作系统版本
  8. let parser = new UAParser()
  9. const axiosObj = axios.create({
  10. baseURL: REQUEST_URL,
  11. headers: {
  12. 'Content-Type': 'application/json;charset=UTF-8',
  13. 'Device-Type': DEVICE_TYPE,
  14. 'Suppress-Response-Code': '1',
  15. 'Device-Info': 'System:'+parser.getOS().name+'; Version:'+parser.getOS().version+'; NetworkType:; UUID:;',
  16. },
  17. })
  18. // 拦截request,设置全局请求为ajax请求
  19. axiosObj.interceptors.request.use((config) => {
  20. //config.headers['X-Requested-With'] = 'XMLHttpRequest';
  21. return config
  22. })
  23. // 拦截响应response,并做一些错误处理
  24. axiosObj.interceptors.response.use((response) => {
  25. const responseData = response.data
  26. const data = responseData.data
  27. if (responseData.success === false) {
  28. const err = new Error(data.message)
  29. err.data = data
  30. err.message = data.message
  31. err.response = response
  32. throw err
  33. } else {
  34. return data
  35. }
  36. }, (err) => { // 这里是返回状态码不为200时候的错误处理
  37. if (err && err.response) {
  38. switch (err.response.status) {
  39. case 400:
  40. err.message = '请求错误'
  41. break
  42. case 401:
  43. err.message = '未授权,请登录'
  44. break
  45. case 403:
  46. err.message = '拒绝访问'
  47. break
  48. case 404:
  49. err.message = `请求地址出错: ${err.response.config.url}`
  50. break
  51. case 408:
  52. err.message = '请求超时'
  53. break
  54. case 500:
  55. err.message = '服务器内部错误'
  56. break
  57. case 501:
  58. err.message = '服务未实现'
  59. break
  60. case 502:
  61. err.message = '网关错误'
  62. break
  63. case 503:
  64. err.message = '服务不可用'
  65. break
  66. case 504:
  67. err.message = '网关超时'
  68. break
  69. case 505:
  70. err.message = 'HTTP版本不受支持'
  71. break
  72. default:
  73. }
  74. }
  75. return Promise.reject(err)
  76. })
  77. export default axiosObj