request.js 3.2 KB

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