request.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. import axios from 'axios'
  2. import { Message } from 'element-ui';
  3. import Router from '../router'
  4. /**
  5. * 使用自定义配置新建一个 axios 实例
  6. * baseURL = 请求路径
  7. * timeout = 请求超时配置
  8. */
  9. const request = axios.create({
  10. baseURL: process.env.BASE_API,
  11. // baseURL: 'http://81.70.84.72:30047/',
  12. // baseURL: baseUrl+":30047/",
  13. timeout: process.env.TIME_OUT,
  14. method: "post",
  15. type: "JSON"
  16. })
  17. // let toast = null
  18. /**
  19. * request拦截器
  20. * 可以在这里添加 Header 头部信息,等
  21. */
  22. request.interceptors.request.use(config => {
  23. // 显示加载
  24. // Spin.show()
  25. // 获取accessToken
  26. // 添加请求头信息,处理安全性问题
  27. let accessToken = "1111111"
  28. if (accessToken !== undefined) {
  29. config.headers.Authorization = accessToken
  30. } else {
  31. config.headers.Authorization = 'Basic dnVlOnZ1ZQ=='
  32. }
  33. // 添加时间戳防止IE不刷新页面
  34. if (config.type != 'FORM') {
  35. if (config.method == 'post') {
  36. config.data = {
  37. ...config.data
  38. }
  39. }
  40. else if (config.method == 'get') {
  41. // config.params = {
  42. // ...config.params,
  43. // // _t: Date.parse(new Date()) / 1000
  44. // }
  45. // config.params = params
  46. }
  47. } else {
  48. let formData = ''
  49. Object.keys(config.data).forEach((key) => {
  50. formData += key + '=' + config.data[key] + '&'
  51. })
  52. config.data = formData
  53. config.headers['Accept'] = 'application/json'
  54. config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
  55. }
  56. return config
  57. }, error => {
  58. // 处理请求错误
  59. Promise.reject(error)
  60. })
  61. /**
  62. * 下面的注释为通过response自定义code来标示请求状态,当coBASE_APIde返回如下情况为权限有问题,登出并返回到登录页
  63. * 如通过xmlhttprequest 状态码标识 逻辑可写在下面error中
  64. */
  65. // 响应拦截器
  66. request.interceptors.response.use(
  67. response => {
  68. // 隐藏加载
  69. // Spin.hide()
  70. // 请求成功处理
  71. // if (response.data.status === 50000) {
  72. // Message.error('凭证过期,请重新登录')
  73. // Router.push('/')
  74. // }
  75. return response.data
  76. },
  77. error => {
  78. // 隐藏加载
  79. // Spin.hide()
  80. // 处理请求错误
  81. const response = error.response
  82. if (response != undefined && response.data) {
  83. // if (response.data.status == '401' && response.status == 401) {
  84. // Message.error('凭证过期,请重新登录')
  85. // // Router.push('/')
  86. // } else if (response.status == 500) {
  87. // Message.error(response.data.message)
  88. // } else if (response.status != 200) {
  89. // Message.error(response.data.message)
  90. // }
  91. return response.data
  92. } else if (response) {
  93. switch (response.status) {
  94. case 400:
  95. Message.error('错误的请求')
  96. break
  97. case 401:
  98. Message.error('凭证过期,请重新登录')
  99. break
  100. case 403:
  101. Message.error('拒绝访问')
  102. break
  103. case 404:
  104. Message.error('请求错误,未找到该资源')
  105. break
  106. case 405:
  107. Message.error('请求方法未允许')
  108. break
  109. case 408:
  110. Message.error('请求超时')
  111. break
  112. case 500:
  113. Message.error('服务器端出错')
  114. break
  115. case 501:
  116. Message.error('网络错误,请检查网络')
  117. break
  118. case 502:
  119. Message.error('网络错误,请检查网络')
  120. break
  121. case 503:
  122. Message.error('服务不可用')
  123. break
  124. case 504:
  125. Message.error('网络请求超时')
  126. break
  127. case 505:
  128. Message.error('http版本不支持该请求')
  129. break
  130. default:
  131. Message.error(`连接错误${error.response.status}`)
  132. }
  133. } else {
  134. Message.error(error.message)
  135. }
  136. // 弹出层
  137. return Promise.reject(error)
  138. }
  139. )
  140. export default request