request.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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: 10000
  24. })
  25. // request interceptor
  26. service.interceptors.request.use(
  27. config => {
  28. console.log("config", config);
  29. // do something before request is sent
  30. if (getToken()) {
  31. // let each request carry token
  32. // ['X-UC-AuthToken'] is a custom headers key
  33. // please modify it according to the actual situation
  34. config.headers['X-UC-AuthToken'] = getToken()
  35. }
  36. return config
  37. },
  38. error => {
  39. // do something with request error
  40. console.log(error) // for debug
  41. return Promise.reject(error)
  42. }
  43. )
  44. service.interceptors.response.use(response => {
  45. const result = response.data;
  46. if (result.resultStatus === 200) {
  47. if (result.success === true) {
  48. console.log(result)
  49. return result.data;
  50. } else {
  51. if (result.messageType === 'MESSAGE_WARN') {
  52. Message({
  53. message: result.message,
  54. type: 'warning',
  55. duration: 5 * 1000
  56. })
  57. } else if (result.messageType === 'MESSAGE_ERROR') {
  58. Message({
  59. message: result.message,
  60. type: 'error',
  61. duration: 5 * 1000
  62. })
  63. }
  64. return Promise.reject(`Request failed:${response.config.url}`)
  65. }
  66. } else if (result.resultStatus === 403) {
  67. Message({
  68. message: "无权限访问",
  69. type: 'error',
  70. duration: 5 * 1000
  71. })
  72. return Promise.reject("无权限访问")
  73. } else if (result.resultStatus === 401) {
  74. removeToken(); // 清除浏览器全部临时缓存
  75. window.location.href = '/'; // 去登录页
  76. return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
  77. } else {
  78. Message({
  79. message: "服务器异常:" + result.message,
  80. type: 'error',
  81. duration: 5 * 1000
  82. })
  83. return Promise.reject(result.message)
  84. }
  85. }, (error => {
  86. console.log('err' + error) // for debug
  87. Message({
  88. message: error.message,
  89. type: 'error',
  90. duration: 5 * 1000
  91. })
  92. return Promise.reject(error)
  93. }))
  94. service.interceptors.request.use(
  95. function (config) {
  96. // Do something before request is sent
  97. return config;
  98. },
  99. function (error) {
  100. // Do something with request error
  101. return Promise.reject(error);
  102. }
  103. );
  104. export default service