request.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. const request = (options) => {
  2. const header = options.header||{};
  3. const loginInfo = uni.getStorageSync("loginInfo");
  4. if (loginInfo) {
  5. header.accessToken = loginInfo.accessToken;
  6. }
  7. return new Promise(function(resolve, reject) {
  8. uni.request({
  9. url: process.env.BASE_URL + options.url,
  10. method: options.method || 'GET',
  11. header: header,
  12. data: options.data || {},
  13. async success(res) {
  14. if (res.data.code == 200) {
  15. return resolve(res.data.data)
  16. } else if (res.data.code == 400) {
  17. uni.navigateTo({
  18. url: '/pages/login/login'
  19. });
  20. } else if (res.data.code == 401) {
  21. console.log("token失效,尝试重新获取")
  22. if (!loginInfo) {
  23. uni.navigateTo({
  24. url: '/pages/login/login'
  25. });
  26. }
  27. // 发送请求, 进行刷新token操作, 获取新的token
  28. const data = await request({
  29. method: 'PUT',
  30. url: '/refreshToken',
  31. header: {
  32. refreshToken: loginInfo.refreshToken
  33. }
  34. })
  35. // 换取token失败,跳转至登录界面
  36. if(data.code != 200){
  37. uni.navigateTo({
  38. url: '/pages/login/login'
  39. });
  40. }
  41. // 保存token
  42. uni.setStorageSync("loginInfo", data);
  43. // 重新发送刚才的请求
  44. return request(options)
  45. } else {
  46. uni.showToast({
  47. icon: "none",
  48. title: res.data.message,
  49. duration: 1500
  50. })
  51. return reject(res.data.data)
  52. }
  53. },
  54. fail(error) {
  55. uni.showToast({
  56. title: "网络似乎有点不给力,请稍后重试",
  57. duration: 1500
  58. })
  59. return reject(error)
  60. }
  61. });
  62. });
  63. }
  64. export default request;