service.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import Request from 'luch-request'
  2. /**
  3. * 阿里云2ce15942be1999220210d9837b01d37e
  4. */
  5. // let baseURL = 'http://8.135.18.59:1889/api/'
  6. // let tokenUrl=baseURL+"/blade-auth/oauth/token?tenant_id=000000&username=admin&password=1ac87efdaf318558f05d1840a94bdd94&grant_type=password&scope=all&type=account"
  7. let baseURL = "http://192.168.1.69"
  8. let tokenUrl=baseURL+"/blade-auth/oauth/token?tenant_id=000000&password=21232f297a57a5a743894a0e4a801fc3&username=admin&grant_type=password"
  9. //获取token
  10. const getTokenStorage = () => {
  11. let token = ''
  12. try {
  13. token = uni.getStorageSync('token')
  14. } catch (e) {
  15. }
  16. return token
  17. }
  18. const http = new Request()
  19. http.setConfig((config) => { /* 设置全局配置 */
  20. config.baseURL = baseURL /* 根域名不同 */
  21. config.header = {
  22. ...config.header,
  23. }
  24. return config
  25. })
  26. http.interceptors.request.use((config) => { /* 请求之前拦截器。可以使用async await 做异步操作 */
  27. config.header = {
  28. ...config.header,
  29. "Blade-Auth": getTokenStorage()
  30. }
  31. return config
  32. }, (config) => {
  33. return Promise.reject(config)
  34. })
  35. // 是否正在刷新的标记
  36. let isRefreshing = false
  37. // 重试队列,每一项将是一个待执行的函数形式
  38. let requests = []
  39. http.interceptors.response.use(async (response) => { /* 请求之后拦截器。可以使用async await 做异步操作 */
  40. console.log(response);
  41. //200 返回数据成功 0
  42. return response
  43. },async (err) => { // 请求错误做点什么
  44. //toekn过期处理
  45. if (err.data.code == 401) {
  46. let {config} = err
  47. if (!isRefreshing) {
  48. isRefreshing = true
  49. let token = uni.getStorageSync('token')
  50. let [,res] = await uni.request({
  51. url: tokenUrl,
  52. method: 'POST',
  53. header:{
  54. Authorization:"Basic c2FiZXI6c2FiZXJfc2VjcmV0"
  55. },
  56. })
  57. //否则保存新的token
  58. token=res.data.token_type+" "+res.data.access_token
  59. uni.setStorageSync('token', token)
  60. requests.forEach(cb => cb())
  61. // 重试完了清空这个队列
  62. requests = []
  63. isRefreshing = false
  64. return http.request(config)
  65. } else {
  66. return new Promise((resolve) => {
  67. // 将resolve放进队列,用一个函数形式来保存,等token刷新后直接执行
  68. requests.push(() => {
  69. resolve(http.request(config))
  70. })
  71. })
  72. }
  73. }
  74. return Promise.reject(err)
  75. })
  76. export {
  77. http
  78. }