小程序request封装的详细流程
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章主要讲解了"小程序request封装的详细流程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"小程序request封装的详细流程"吧!背景之前小
千家信息网最后更新 2025年11月14日小程序request封装的详细流程
这篇文章主要讲解了"小程序request封装的详细流程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"小程序request封装的详细流程"吧!
背景
之前小程序代码混乱,所以新项目一开始就准备弄个微信小程序的 request 的封装
流程
先来说说整个流程:
1.appjs 里面已进入就去获取用户信息,如果没有登录则默认登录,这里不做错误处理
2.用户必须同意授权才能进行操作,如果不同意授权则会一直跳转到授权页面
undefined
app.js
onLaunch 里面获取用户信息
appSelf = this; // 应用程序第一次进入,获取用户信息,不做任何错误处理 userInfo().then( (res)=>{ console.log(res);// 打印结果 if (!res.code) { appSelf.globalData.userInfo = res } }).catch( (errMsg)=>{ console.log(errMsg);// 错误提示信息 });httpUtils.js
request 的封装
const request = function (path, method, data, header) { let user_id = ""; let token = ""; try { user_id = wx.getStorageSync(USER_ID_KEY); token = wx.getStorageSync(TOKEN_KEY); } catch (e) {} header = header || {}; let cookie = []; cookie.push("USERID=" + user_id); cookie.push("TOKEN=" + token); cookie.push("device=" + 1); cookie.push("app_name=" + 1); cookie.push("app_version=" + ENV_VERSION); cookie.push("channel=" + 1); header.cookie = cookie.join("; "); return new Promise((resolve, reject) => { wx.request({//后台请求 url: API_BASE_URL + path, header: header, method: method, data: data, success: function (res) { if (res.statusCode !== 200) { reject(res.data) } else { if (res.data.code === 20006) { login().then( (res)=>{ resolve(res) }).catch( (errMsg)=>{ reject(errMsg); }) } resolve(res.data) } }, fail: function (res) { reject("not data"); } }); });}login
const login = function () { try { wx.removeStorageSync(USER_ID_KEY) wx.removeStorageSync(TOKEN_KEY) } catch (e) {} return new Promise((resolve, reject) => { wx.login({ success: res => { let code = res.code; // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 wx.getUserInfo({ withCredentials: true, success: res => { let userInfo = res.userInfo; let name = userInfo.nickName; let avatar = userInfo.avatarUrl; let sex = userInfo.gender; let data = { code: code, encryptedData: res.encryptedData, iv: res.iv, name: name, avatar: avatar, sex: sex, from: FROM, }; request("/api/user/login/byWeChatApplet", "POST", data).then( (res)=>{ if (!res.code) { try { wx.setStorageSync(USER_ID_KEY, res.user_id); wx.setStorageSync(TOKEN_KEY, res.token) } catch (e) { reject(JSON.stringify(e)); } } resolve(res) }).catch( (errMsg)=>{ reject(errMsg) }); }, fail: function (res) { console.log(res); if (res.errMsg && res.errMsg.startsWith("getUserInfo:fail") && res.errMsg.search("unauthorized") != -1) { // 跳转授权页面 wx.navigateTo({ url: '/pages/auth/auth' }) return; } wx.getSetting({ success: (res) => { if (!res.authSetting["scope.userInfo"]) { // 跳转授权页面 wx.navigateTo({ url: '/pages/auth/auth' }) } } }); } }) } }) });};auth.js
授权页面 js
Page({ data: { }, onLoad: function () { self = this; }, auth: function (e) { console.log(app.globalData.userInfo); if (e.detail.userInfo) { login().then( (res)=>{ console.log(res);// 打印结果 if (res.code) { // 接口错误 return } // 跳转回上一个页面 wx.navigateBack() }).catch( (errMsg)=>{ console.log(errMsg);// 错误提示信息 }); } },});感谢各位的阅读,以上就是"小程序request封装的详细流程"的内容了,经过本文的学习后,相信大家对小程序request封装的详细流程这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
程序
流程
封装
信息
错误
页面
用户
学习
内容
结果
处理
提示
登录
混乱
代码
后台
头像
就是
应用程序
思路
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机网络技术工程方向
总部在北京的互联网科技公司
无锡通用软件开发设计规范
福建咨询软件开发介绍
ubuntu服务器管理
如何学会网络技术
高清染色软件开发公司
斗破苍穹网络技术
农行软件开发天津校招笔试题
如何在网易服务器开32k
徐汇区网络软件开发协议
计算机三级网络技术 笔记
ios软件开发工作靠谱吗
访问不了本地服务器
网络安全文明上网作业
上海本地网络技术哪家强
虚拟专用网络技术的特点
大话西游最新服务器
数据库连接池加密
佛山软件开发找工作
软件开发武汉学校
金融数据网络技术
公安机关内部网络安全宣传内容
家里搞一台服务器
ibm 服务器 功率
网络安全宣传周2019
软件开发属于什么专业吗
高中网络技术应用教材
各类网站的服务器带宽要求
计算机网络技术的应用前言