service.js 2.8 KB

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