废话不多说直接贴代码:
业务相关 js
// 获取剩余金额 --- get 请求无参数 getbalance: function () { api.getbalance().then(data => { let balance = data.data balance.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.totalconsumemoney lastcost = 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 promise return 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 promise return 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 promise return promise.then(res => { return res.data }).catch(err => { console.log(err) }) } module.exports = { getuserinfo: getuserinfo, getbalance: getbalance, getlastcost: getlastcost }
上面的代码看起来像是步骤变多了,但是这样的好处是维护方便,在业务代码里只关注业务,而不用去关注请求的本身,content-type 切换也方便,当然如果你们的传参方式只有一种可以写死更简单一些,作为前端菜鸟的第一篇文章希望能帮助到几个人,最希望大佬们不吝赐教,指点指点。
相关推荐:
微信小程序wx.request实现后台数据交互功能分析
小程序开发--网络请求wx.request实例教程
小程序开发--wx.request异步封装实例教程
以上就是实例详解微信小程序wx.request 的封装的详细内容。