异常处理

src/utils/request.js 文件中对所有的 request请求进行拦截, 通过response 拦截器对接口返回的状态码进行分析与异常处理,代码如下

  1. // response 拦截器
  2. service.interceptors.response.use(
  3. response => {
  4. const code = response.status
  5. if (code < 200 || code > 300) {
  6. Notification.error({
  7. title: response.message
  8. })
  9. return Promise.reject('error')
  10. } else {
  11. return response.data
  12. }
  13. },
  14. error => {
  15. let code = 0
  16. try {
  17. code = error.response.data.status
  18. } catch (e) {
  19. if (error.toString().indexOf('Error: timeout') !== -1) {
  20. Notification.error({
  21. title: '网络请求超时',
  22. duration: 5000
  23. })
  24. return Promise.reject(error)
  25. }
  26. }
  27. if (code) {
  28. if (code === 401) {
  29. store.dispatch('LogOut').then(() => {
  30. // 用户登录界面提示
  31. Cookies.set('point', 401)
  32. location.reload()
  33. })
  34. } else if (code === 403) {
  35. router.push({ path: '/401' })
  36. } else {
  37. const errorMsg = error.response.data.message
  38. if (errorMsg !== undefined) {
  39. Notification.error({
  40. title: errorMsg,
  41. duration: 5000
  42. })
  43. }
  44. }
  45. } else {
  46. Notification.error({
  47. title: '接口请求失败',
  48. duration: 5000
  49. })
  50. }
  51. return Promise.reject(error)
  52. }
  53. )