service.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import Request from '../../utils/my-request/index.js'
  2. //w3 wifi
  3. // let baseURL='http://192.168.0.105:9527/'
  4. //w2 wifi
  5. // let baseURL='http://192.168.0.101:9527/'
  6. //思奇特
  7. // let baseURL='http://192.168.2.200:9527/'
  8. // let baseURL='http://192.168.2.229:9527/'
  9. //远程
  10. // let baseURL='http://139.9.103.171:9527/'
  11. //let baseURL='https://park.58fo.com/api/'
  12. let baseURL='http://localhost:9527/'
  13. let tokenUrl=baseURL+"blade-auth/oauth/token?tenantId=804981&password=ea3c40c0df5477c525543b0e85548004&username=wpadmin"
  14. //获取token
  15. const getTokenStorage = () => {
  16. let token = ''
  17. try {
  18. token = uni.getStorageSync('token')
  19. } catch (e) {
  20. }
  21. return token
  22. }
  23. const http = new Request()
  24. http.setConfig((config) => { /* 设置全局配置 */
  25. config.baseURL = baseURL /* 根域名不同 */
  26. config.header = {
  27. ...config.header,
  28. }
  29. return config
  30. })
  31. http.interceptors.request.use((config) => { /* 请求之前拦截器。可以使用async await 做异步操作 */
  32. config.header = {
  33. ...config.header,
  34. "Blade-Auth": getTokenStorage()
  35. }
  36. return config
  37. }, (config) => {
  38. return Promise.reject(config)
  39. })
  40. // 是否正在刷新的标记
  41. let isRefreshing = false
  42. // 重试队列,每一项将是一个待执行的函数形式
  43. let requests = []
  44. http.interceptors.response.use(async (response) => { /* 请求之后拦截器。可以使用async await 做异步操作 */
  45. //toekn过期处理
  46. if (response.data.code == 401) {
  47. let {config} = response
  48. if (!isRefreshing) {
  49. isRefreshing = true
  50. let token = uni.getStorageSync('token')
  51. let [,res] = await uni.request({
  52. url: tokenUrl,
  53. method: 'POST',
  54. header:{
  55. Authorization:"Basic c2FiZXI6c2FiZXJfc2VjcmV0"
  56. },
  57. })
  58. //否则保存新的token
  59. token=res.data.token_type+" "+res.data.access_token
  60. uni.setStorageSync('token', token)
  61. requests.forEach(cb => cb())
  62. // 重试完了清空这个队列
  63. requests = []
  64. isRefreshing = false
  65. return http.request(config)
  66. } else {
  67. return new Promise((resolve) => {
  68. // 将resolve放进队列,用一个函数形式来保存,等token刷新后直接执行
  69. requests.push(() => {
  70. resolve(http.request(config))
  71. })
  72. })
  73. }
  74. }
  75. //200 返回数据成功 0 上传文件成功 400 没有相关数据
  76. if (response.data.code != 200 && response.data.code !=400 && response.data.code !=0) {
  77. return Promise.reject(response)
  78. }
  79. return response.data
  80. }, (err) => { // 请求错误做点什么
  81. uni.showToast({
  82. icon: 'none',
  83. position: 'bottom',
  84. title: '网络异常'
  85. })
  86. return err
  87. })
  88. export {
  89. http
  90. }