service.js 2.7 KB

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