(代碼是來自自做項目的一部分,可自行更改完成業務)
創建utils.js文件在文件中封裝wx.request方法
// 封裝的微信request方法 function request(url, data = {}, method = "POST", header = "application/x-www-form-urlencoded") { wx.showLoading({ title: '加載中···', mask: true }) //這里是判斷登錄不需要攜帶token if (url != api.BASE_URL + '/api/user/login') { header = { 'Content-Type': header, Authorization: `Bearer ${wx.getStorageSync('token')}` } } else { header = { 'Content-Type': header } } return new Promise(function (resolve, reject) { wx.request({ url: url, data: data, method: method, header: header, success: function (res) { wx.hideLoading(); if (res.statusCode == 200) { if (res.data.code == 401) {//token過期之后獲取新的token getNewToken().then(() => { request(url,data,method,header).then(res =>{ resolve(res) }) }) } else { resolve(res.data); } } }, fail: function (err) { wx.hideLoading(); reject(err) } }) }) }
這個方法為token過期后調用的登錄方法獲取token
function getNewToken() {//token過期之后獲取新的token return new Promise((resolve, reject)=>{ request(api.getUserPhone, { username: wx.getStorageSync('username'), password: wx.getStorageSync('password'), }, "POST").then(res => { if (res.code == 200) { wx.setStorageSync('token', res.token) resolve(); } }) }) }