request.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import axios from 'axios'
  2. import {
  3. Message
  4. } from 'element-ui'
  5. import {
  6. getToken,
  7. removeToken
  8. } from '@/utils/auth'
  9. import constant from "@/api/constant";
  10. // 是否显示重新登录
  11. axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
  12. if (getToken()) {
  13. axios.defaults.headers['X-UC-AuthToken'] = getToken()
  14. }
  15. axios.defaults.headers['Accept-Language'] = 'en-US';
  16. axios.defaults.headers["X-SYSTEM-ID"] = constant.systemId ? constant.systemId : ""
  17. axios.defaults.headers["X-SYSTEM-GROUP-ID"] = constant.systemGroupId ? constant.systemGroupId : ""
  18. // create an axios instance
  19. const service = axios.create({
  20. // axios中请求配置有baseURL选项,表示请求URL公共部分
  21. baseURL: process.env.VUE_APP_BASE_API,
  22. // 超时
  23. // timeout: 100000
  24. })
  25. // request interceptor
  26. service.interceptors.request.use(
  27. config => {
  28. // do something before request is sent
  29. if (getToken()) {
  30. // let each request carry token
  31. // ['X-UC-AuthToken'] is a custom headers key
  32. // please modify it according to the actual situation
  33. config.headers['X-UC-AuthToken'] = getToken()
  34. }
  35. return config
  36. },
  37. error => {
  38. // do something with request error
  39. console.log(error) // for debug
  40. return Promise.reject(error)
  41. }
  42. )
  43. service.interceptors.response.use(response => {
  44. const result = response.data;
  45. if (result.resultStatus === 200) {
  46. if (result.success === true) {
  47. return result.data;
  48. } else {
  49. if (result.messageType === 'MESSAGE_WARN') {
  50. Message({
  51. message: result.message,
  52. type: 'warning',
  53. duration: 5 * 1000
  54. })
  55. } else if (result.messageType === 'MESSAGE_ERROR') {
  56. Message({
  57. message: result.message,
  58. type: 'error',
  59. duration: 5 * 1000
  60. })
  61. }
  62. return Promise.reject(`Request failed:${response.config.url}`)
  63. }
  64. } else if (result.resultStatus === 403) {
  65. Message({
  66. message: "无权限访问",
  67. type: 'error',
  68. duration: 5 * 1000
  69. })
  70. return Promise.reject("无权限访问")
  71. } else if (result.resultStatus === 401) {
  72. removeToken(); // 清除浏览器全部临时缓存
  73. window.location.href = '/'; // 去登录页
  74. return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
  75. } else {
  76. Message({
  77. message: "服务器异常:" + result.message,
  78. type: 'error',
  79. duration: 5 * 1000
  80. })
  81. return Promise.reject(result.message)
  82. }
  83. }, (error => {
  84. console.log('err' + error) // for debug
  85. Message({
  86. message: error.message,
  87. type: 'error',
  88. duration: 5 * 1000
  89. })
  90. return Promise.reject(error)
  91. }))
  92. service.interceptors.request.use(
  93. function (config) {
  94. // Do something before request is sent
  95. return config;
  96. },
  97. function (error) {
  98. // Do something with request error
  99. return Promise.reject(error);
  100. }
  101. );
  102. export default service