request.js 4.6 KB

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