失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 微信小程序 wx.request 的封装

微信小程序 wx.request 的封装

时间:2022-08-16 11:58:23

相关推荐

微信小程序 wx.request 的封装

自学转行到前端也已近两年,也算是简书和掘金的忠实粉丝,但是以前一直惜字如金(实在是胆子小,水平又低),现在我决定视金钱如粪土(就只是脸皮厚了,水平就那样),好了废话不多说,切入主题,最近自己尝试了一下小程序开发,坑么总是有的,但是我觉得还是request这部分实在是不好看,所以你懂得,我用Promise 对请求做了个简单封装。本文章所述方法主要针对第三方登录

废话不多说直接贴代码:

业务相关 js

// 获取剩余金额 --- GET 请求无参数getBalance: function () {api.getBalance().then(data => {let balance = data.databalance.balance = balance.balance.toFixed(2)this.setData({balance: { ...balance }})})},// 获取昨日消费数据 --- POST 请求,使用 application/x-www-form-urlencoded 传参getLastCost: function () {let yestoday = util.transDate('', -1)let data = {subAccountIdx: 0,startDay: yestoday,endDay: yestoday,type: 0,business: 0,export: false}api.getLastCost(data, 'application/x-www-form-urlencoded', 'POST').then(data => {let lastCost = data.data.record.totalConsumeMoneylastCost = lastCost.toFixed(2)this.setData({lastCost: lastCost})})}

从上面的代码是业务部分代码,不知道你是否喜欢这种方式呢,接下来就看看 封装方式 和 业务对应的配置 js

使用 Promise 封装 wx.request

我们大部分网站都是用 cookie 来维护登录状态的,但是小程序是无法用 cookie 来维护登录状态的,那么我们先获取请求头的 cookie, 然后将 cookie 保存在全局变量当中(相信获取 cookie 肯定没问题吧, 这部分就不展示了)

// wx.request 封装var app = getApp() function wxRequest(url, config, resolve, reject) {let { data = {},contentType = 'application/json',method = 'GET',...other} = {...config}wx.request({url: url,data: {...data},method: method,header: {'content-type': contentType,'Cookie': app.globalData.cookie // 全局变量中获取 cookie},success: (data) => resolve(data),fail: (err) => reject(err)})}module.exports = {wxRequest: wxRequest}

封装的代码很简单,接下来就是配置代码了

业务对应的配置 js

// 用 import 或者 require 引入模块 import util from '../../../util/util.js'var Promise = require('../../../plugin/promise.js') // 请注意 Promise 要手动引入,内测版是自动引入的// 获取个人信息const API_USERINFO = "https://www.***/get"// 获取剩余金额const API_BALANCE = 'https://www.***/get'// 获取昨日消费数据const API_LASTCOST = 'https://www.***/get'// 获取个人信息事件 function getUserInfo(data, contentType) {var promise = new Promise((resolve, reject) => {util.wxRequest(API_USERINFO, { data, contentType }, resolve, reject)})// return promisereturn promise.then(res => {return res.data}).catch(err => {console.log(err) })}// 获取剩余金额事件function getBalance(data, contentType) {var promise = new Promise((resolve, reject) => {util.wxRequest(API_BALANCE, { data, contentType }, resolve, reject)})// return promisereturn promise.then(res => {return res.data}).catch(err => {console.log(err)})}// 获取昨日消费数据function getLastCost(data, contentType, method) {var promise = new Promise((resolve, reject) => {util.wxRequest(API_LASTCOST, { data, contentType, method }, resolve, reject)})// return promisereturn promise.then(res => {return res.data}).catch(err => {console.log(err)})}module.exports = {getUserInfo: getUserInfo,getBalance: getBalance,getLastCost: getLastCost}

上面的代码看起来像是步骤变多了,但是这样的好处是维护方便,在业务代码里只关注业务,而不用去关注请求的本身,content-type 切换也方便,当然如果你们的传参方式只有一种可以写死更简单一些,作为前端菜鸟的第一篇文章希望能帮助到几个人,最希望大佬们不吝赐教,指点指点。

本文作者: frontX

原文地址:微信小程序 wx.request 的封装

声明:本文来源于网络,版权归作者所有,不代表本专栏观点,有什么问题请联系我,谢谢!

如果觉得《微信小程序 wx.request 的封装》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。