request.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. const BASE_URL = "http://192.168.43.6:8888"
  2. const request = (options) => {
  3. const header = options.header||{};
  4. const accessToken = uni.getStorageSync("accessToken");
  5. if (accessToken) {
  6. header.accessToken = accessToken;
  7. }
  8. return new Promise(function(resolve, reject) {
  9. uni.request({
  10. url: BASE_URL + options.url,
  11. method: options.method || 'GET',
  12. header: header,
  13. data: options.data || {},
  14. async success(res) {
  15. if (res.data.code == 200) {
  16. return resolve(res.data.data)
  17. } else if (res.data.code == 400) {
  18. uni.navigateTo({
  19. url: '/pages/login/login'
  20. });
  21. } else if (res.data.code == 401) {
  22. console.log("token失效,尝试重新获取")
  23. const refreshToken = uni.getStorageSync("refreshToken");
  24. if (!refreshToken) {
  25. uni.navigateTo({
  26. url: '/pages/login/login'
  27. });
  28. }
  29. // 发送请求, 进行刷新token操作, 获取新的token
  30. const data = await request({
  31. method: 'PUT',
  32. url: '/refreshToken',
  33. header: {
  34. refreshToken: refreshToken
  35. }
  36. })
  37. // 换取token失败,跳转至登录界面
  38. if(data.code != 200){
  39. uni.navigateTo({
  40. url: '/pages/login/login'
  41. });
  42. }
  43. // 保存token
  44. uni.setStorageSync("accessToken", data.accessToken);
  45. uni.setStorageSync("refreshToken", data.refreshToken);
  46. // 这里需要把headers清掉,否则请求时会报错,原因暂不详...
  47. //response.config.headers=undefined;
  48. // 重新发送刚才的请求
  49. return request(options)
  50. } else {
  51. uni.showToast({
  52. icon: "error",
  53. title: res.data.message,
  54. duration: 1500
  55. })
  56. return reject(res.data.data)
  57. }
  58. },
  59. fail(error) {
  60. switch (error.response.status) {
  61. case 400:
  62. uni.showToast({
  63. title: error.response.data,
  64. type: 'error',
  65. duration: 1500,
  66. })
  67. break
  68. case 401:
  69. uni.navigateTo({
  70. url: '/pages/login/login'
  71. });
  72. break
  73. case 405:
  74. uni.showToast({
  75. title: 'http请求方式有误',
  76. icon: 'error',
  77. duration: 1500
  78. })
  79. break
  80. case 404:
  81. case 500:
  82. uni.showToast({
  83. title: '服务器出了点小差,请稍后再试',
  84. icon: 'error',
  85. duration: 1500
  86. })
  87. break
  88. case 501:
  89. uni.showToast({
  90. title: '服务器不支持当前请求所需要的某个功能',
  91. icon: 'error',
  92. duration: 1500
  93. })
  94. break
  95. }
  96. return reject(error)
  97. }
  98. });
  99. });
  100. }
  101. export default request;