小程序的quest请求简单处理(小程序 请求)

网友投稿 949 2022-10-09

小程序的quest请求简单处理(小程序 请求)

小程序的quest请求简单处理(小程序 请求)

小程序针对request的简单配置

简介

在小程序开发中,同样也需要我们进行用户登录,通常情况下我们是token来验证用户信息。这里是我们将request进行的简易封装。

流程

调用封装好的request的方法执行过程中回到缓存中查找token值,如果没查到则会直接调用getToken方法,重新获取token值getToken是通过调用小程序的登录和获取用户信息接口拿到的参数调用我们自己的login接口返回token值

代码

const API_URL = 'https://xxxx/api/' //接口App({ asyncRequest(params) { let that = this let token = wx.getStorageSync('token') // 直接使用url,有时候会直接调一些其他的接口 if (!params.useUrl) { params.url = API_URL + params.url } params.header = { Authorization: 'Bearer ' + token, Accept: 'application/json' } params.data = params.data ? params.data : {} return new Promise((resolve, reject) => { params.success = res => { if (200 !== res.statusCode) { reject(res) } resolve(res) } params.fail = err => { reject(err) } return wx.request(params) }) }, request(params) { let that = this return this.asyncRequest(params).catch(err => { if (401 === err.statusCode) { return that.getToken(params.data).then(res => { params.useUrl = true return that.asyncRequest(params) }) } return Promise.reject(err) }) }, getToken(options) { //获取token let that = this return new Promise((resolve, reject) => { wx.login({ success: res1 => { let { code } = res1 // 获取用户信息 wx.getUserInfo({ //用户授权拿到encryptedData、iv success: res2 => { let { encryptedData, iv } = res2 // 业务登录,获取access_token that.asyncRequest({ url: 'login', data: { code, encryptedData, iv }, method: 'POST', }).then(res3 => { wx.setStorageSync('token', res3.data.access_token) //获取token放在storage wx.setStorageSync('user', res3.data.user_info) resolve(res3) }).catch(err3 => { reject(err3) }) }, fail: err2 => { //如果决绝授权弹窗提醒跳转至用户信息授权页面,授权后跳回首页 console.log('err2:', err2) // 提示用户前往授权 wx.showModal({ // title: '提示', content: '您未授权,请您开启“用户信息”授权。', showCancel: false, confirmText: '确定', complete: () => { wx.openSetting({ complete: () => { wx.reLaunch({ url: '/pages/index/index' }) } }) }, }) reject(err2) } }) }, fail: err1 => { console.log('err1:', err1) reject(err1) } }) }) }})

调用方法

官方的用法一样 const app = getApp() app.request和wx.request一样! 类似https://xxxx/api/login的调用方式

app.request({ url: 'login', success: res=>{}})

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:git cherry命令来比较两个分支的不同
下一篇:mysql之delete
相关文章

 发表评论

暂时没有评论,来抢沙发吧~