知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
您當(dāng)前位置>首頁 » 新聞資訊 » 小程序相關(guān) >
微信小程序 wx.request 的封裝
發(fā)表時間:2021-3-31
發(fā)布人:葵宇科技
瀏覽次數(shù):46
自學(xué)轉(zhuǎn)行到前端也已近兩年,也算是簡書和掘金的忠實粉絲,但是以前一直惜字如金(實在是膽子小,水平又低),現(xiàn)在我決定視金錢如糞土(就只是臉皮厚了,水平就那樣),好了廢話不多說,切入主題,最近自己嘗試了一下小程序開發(fā),坑么總是有的,但是我覺得還是request這部分實在是不好看,所以你懂得,我用Promise 對請求做了個簡單封裝。本文章所述方法主要針對第三方登錄
廢話不多說直接貼代碼:
業(yè)務(wù)相關(guān) js
// 獲取剩余金額 --- GET 請求無參數(shù)
getBalance: function () {
api.getBalance().then(data => {
let balance = data.data
balance.balance = balance.balance.toFixed(2)
this.setData({
balance: { ...balance }
})
})
},
// 獲取昨日消費數(shù)據(jù) --- POST 請求,使用 application/x-www-form-urlencoded 傳參
getLastCost: function () {
let yestoday = util.transDate('', -1)
let data = https://www.wxapp-union.com/{
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
})
})
}
從上面的代碼是業(yè)務(wù)部分代碼,不知道你是否喜歡這種方式呢,接下來就看看 封裝方式 和 業(yè)務(wù)對應(yīng)的配置 js
使用 Promise 封裝 wx.request
我們大部分網(wǎng)站都是用 cookie 來維護登錄狀態(tài)的,但是小程序是無法用 cookie 來維護登錄狀態(tài)的,那么我們先獲取請求頭的 cookie, 然后將 cookie 保存在全局變量當(dāng)中(相信獲取 cookie 肯定沒問題吧, 這部分就不展示了)
// wx.request 封裝
var app = getApp()
function wxRequest(url, config, resolve, reject) {
let {
data = https://www.wxapp-union.com/{},
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
}
封裝的代碼很簡單,接下來就是配置代碼了
業(yè)務(wù)對應(yīng)的配置 js
// 用 import 或者 require 引入模塊
import util from '../../../util/util.js'
var Promise = require('../../../plugin/promise.js') // 請注意 Promise 要手動引入,內(nèi)測版是自動引入的
// 獲取個人信息
const API_USERINFO = "https://www.***/get"
// 獲取剩余金額
const API_BALANCE = 'https://www.***/get'
// 獲取昨日消費數(shù)據(jù)
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)
})
}
// 獲取昨日消費數(shù)據(jù)
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
}
上面的代碼看起來像是步驟變多了,但是這樣的好處是維護方便,在業(yè)務(wù)代碼里只關(guān)注業(yè)務(wù),而不用去關(guān)注請求的本身,content-type 切換也方便,當(dāng)然如果你們的傳參方式只有一種可以寫死更簡單一些,作為前端菜鳥的第一篇文章希望能幫助到幾個人,最希望大佬們不吝賜教,指點指點。
相關(guān)案例查看更多
相關(guān)閱讀
- 百度人工排名
- 云南網(wǎng)站制作哪家好
- 關(guān)鍵詞快速排名
- 網(wǎng)站優(yōu)化哪家好
- 汽車報廢拆解管理系統(tǒng)
- 小程序被騙退款成功
- 花農(nóng)小程序
- 前端
- 小程序定制
- 昆明網(wǎng)站開發(fā)
- 網(wǎng)站開發(fā)公司哪家好
- 汽車回收管理系統(tǒng)
- 報廢車
- Web開發(fā)框架
- 日歷組件
- 云南軟件定制公司
- typescript
- 網(wǎng)頁制作
- 網(wǎng)站制作哪家好
- 霸屏推廣
- 紅河小程序開發(fā)
- 云南小程序定制
- 網(wǎng)站建設(shè)專業(yè)品牌
- 云南小程序開發(fā)費用
- 網(wǎng)站收錄
- 云南網(wǎng)站建設(shè)公司
- asp網(wǎng)站
- 昆明軟件定制公司
- 網(wǎng)站建設(shè)靠譜公司
- web