谢谢大家,请问一个关于小程序登录失效后,再次发起业务代码请求的问题?

export const request = (options = {}) => {
    //异步封装接口,使用Promise处理异步请求
    return new Promise((resolve, reject) => {
    
            let rd3_key = uni.getStorageSync('rd3_key') ? uni.getStorageSync('rd3_key') : ''
            
            // 发送请求
            uni.request({
                url: baseUrl + options.url || '', //接收请求的API
                method: options.method || 'GET', //接收请求的方式,如果不传默认为GET
                data: options.data || {}, //接收请求的data,不传默认为空
                data: {
                    ...options.data,
                    rd3_key
                },
                header: {
                    'content-type': 'application/x-www-form-urlencoded', //修改此处即可
                }
            }).then(data => {
                let [err, res] = data;
                // if(res.data.code == 4001){
                //     post_login()
                // }
                
                if(res.data.code == 4001){
                    // return post_login().then(resolve, reject)
                    post_login()
                    
                }
                
                resolve(res);
            }).catch(error => {
                
                reject(error);
            })
        
    
    })
}

上面是封装的请求代码,我们小程序登录失效的话,返回状态码是4001,也就是下面这段代码,

if(res.data.code == 4001){

               
                post_login()  //wx.login 静默登录拿openid
                
            }

当登录失效也就算code== 4001的时候, 我重新调登录,这一步没有问题,但是那些各个页面请求的接口,没有再次发起请求,我也不知道用户会在哪个页面的出现登录失效的情况,又不想在每个接口请求的地方都写一个if(res.data.code == 4001) 发起登录后,再调用业务接口请求,

这个有什么比较好的统一封装请求的方法吗?谢谢大家

阅读 1.6k
1 个回答

可以写在响应拦截器里,如果发现code===4001的话可以先跳转到一个中间页进行提示正在重新登录,重新登录成功后再跳转回上一页走一遍生命周期

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题