request.js 4.0 KB

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