request.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import axios from 'axios'
  2. // import md5 from 'js-md5'
  3. import { Message } from 'element-plus'
  4. import vue from "vue"
  5. import router from '@/router'
  6. // 请求url
  7. const service = axios.create({
  8. // baseURL: window.STATIC_CONFIG.proxyUrl, // url = base url + request url
  9. baseURL: "http://8.142.173.95:9527/api",
  10. timeout: 15000, // request timeout
  11. headers:{
  12. "Content-Type":"application/x-www-form-urlencoded"
  13. }
  14. })
  15. // 请求前拦截
  16. service.interceptors.request.use(
  17. config => {
  18. let user = sessionStorage.getItem("userInfo")
  19. if (user) {
  20. user = JSON.parse(user)
  21. let userToken = user.sessionid
  22. const now = new Date().getTime()
  23. const nonce = now + randomString(6)
  24. let signparam = ''
  25. let signdata = ''
  26. const params = config.params
  27. const data = config.data
  28. if (data) {
  29. for (const key in data) {
  30. if (data[key] == null) continue
  31. const signdataItem = key + '=' + data[key]
  32. signdata = signdata + (signdata === '' ? '' : '&') + signdataItem
  33. }
  34. }
  35. if (params) {
  36. for (const k in params) {
  37. if (params[k] == null) continue
  38. const signparamItem = k + '=' + params[k]
  39. signparam = signparam + (signparam === '' ? '' : '&') + signparamItem
  40. }
  41. }
  42. let signs = signparam + ((signparam === '' || signdata === '') ? '' : '&') + signdata
  43. signs = signs + (signs === '' ? '' : '&') + 'auth_nonce=' + nonce + '&auth_time=' + now
  44. signs = signs.split('&').sort().join('&')
  45. signs = signs.replace(/\+/gi, '%20')
  46. signs = decodeURIComponent(signs)
  47. signs = encodeURIComponent(signs)
  48. // signs = md5(signs)
  49. // }
  50. config.headers['Authorization'] = 'Bearer ' + userToken
  51. config.headers.auth_time = now
  52. config.headers.auth_nonce = nonce
  53. config.headers.sign = signs
  54. // config.headers['content-type'] = 'application/x-www-form-urlencoded'
  55. return config
  56. } else {
  57. return config
  58. }
  59. },
  60. error => {
  61. // do something with request error
  62. console.log('请求前拦截error=', error) // for debug
  63. // return Promise.reject(error)
  64. }
  65. )
  66. // 响应拦截
  67. service.interceptors.response.use(
  68. response => {
  69. // console.log(response,'响应拦截器res');
  70. let res = response.data
  71. return res
  72. },
  73. error => {
  74. console.log(error,'相应拦截器error');
  75. if (error.response.status === 401) {
  76. Message({
  77. message: "登陆已过期,请重新登录",
  78. type: "error"
  79. })
  80. router.push("/login")
  81. sessionStorage.removeItem('userInfo')
  82. sessionStorage.removeItem('userToken')
  83. }
  84. // Message({
  85. // message: '' + error.response.data.message,
  86. // type: 'error',
  87. // duration: 3 * 1000,
  88. // offset: window.screen.height / 3
  89. // })
  90. return Promise.reject(error)
  91. }
  92. )
  93. const randomString = function (e) {
  94. e = e || 32
  95. const t = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
  96. const a = t.length
  97. let n = ''
  98. for (let i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a))
  99. return n
  100. }
  101. export default service