<a>§ 封裝網(wǎng)絡(luò)請(qǐng)求及 mock 數(shù)據(jù)</a>
本文配套視頻地址:
https://v.qq.com/x/page/i05544fogcm.html
開始前請(qǐng)把
ch2-3
分支中的code/
目錄導(dǎo)入微信開發(fā)工具
上一節(jié)中,我們對(duì) index.js 文件中增加了 util 對(duì)象扒磁,并在對(duì)象中封裝了很多公用方法
let util = {
log(){……},
alert(){……},
getStorageData(){……},
setStorageData(){……}
}
本節(jié)中朱监,我們對(duì)常用的網(wǎng)絡(luò)請(qǐng)求方法 wx.request 進(jìn)行封裝
let util = {
// 此處省略部分代碼
request(opt){
let {url, data, header, method, dataType} = opt
let self = this
return new Promise((resolve, reject)=>{
wx.request({
url: url,
data: data,
header: header,
method: method,
dataType: dataType,
success: function (res) {
if (res && res.statusCode == 200 && res.data) {
resolve(res.data);
} else {
self.alert('提示', res);
reject(res);
}
},
fail: function (err) {
self.log(err);
self.alert('提示', err);
reject(err);
}
})
})
}
}
對(duì)于請(qǐng)求的參數(shù)扮休,我們?cè)O(shè)置下默認(rèn)值,方便調(diào)用
const DEFAULT_REQUEST_OPTIONS = {
url: '',
data: {},
header: {
"Content-Type": "application/json"
},
method: 'GET',
dataType: 'json'
}
let util = {
// 此處省略部分代碼
request (opt){
let options = Object.assign({}, DEFAULT_REQUEST_OPTIONS, opt)
let {url, data, header, method, dataType, mock = false} = options
let self = this
// 此處省略部分代碼
}
}
如果是本地開發(fā)調(diào)試蕉汪,需要增加我們的 mock 假數(shù)據(jù)盟蚣,對(duì) util.request 進(jìn)行修改
let util = {
// 此處省略部分代碼
request (opt){
let options = Object.assign({}, DEFAULT_REQUEST_OPTIONS, opt)
let {url, data, header, method, dataType, mock = false} = options
let self = this
return new Promise((resolve, reject)=>{
if(mock){
let res = {
statusCode: 200,
data: Mock[url]
}
if (res && res.statusCode == 200 && res.data) {
resolve(res.data);
} else {
self.alert('提示', res);
reject(res);
}
}else{
wx.request({
url: url,
data: data,
header: header,
method: method,
dataType: dataType,
success: function (res) {
if (res && res.statusCode == 200 && res.data) {
resolve(res.data);
} else {
self.alert('提示', res);
reject(res);
}
},
fail: function (err) {
self.log(err);
self.alert('提示', err);
reject(err);
}
})
}
})
}
}
如果請(qǐng)求接口調(diào)用時(shí)候刺覆,包含有參數(shù) mock = true绽族,會(huì)自動(dòng)調(diào)用相應(yīng)的 mock 數(shù)據(jù)姨涡,如果沒有這個(gè)參數(shù),就走正常流程去調(diào)數(shù)據(jù)吧慢。
調(diào)用方法如下:
util.request({
url: 'list',
mock: true,
data: {
tag:'微信熱門',
start: 1,
days: 3,
pageSize: 5,
langs: 'en'
}
}).then(res => {
// do something
})
iKcamp官網(wǎng):http://www.ikcamp.com
訪問官網(wǎng)更快閱讀全部免費(fèi)分享課程:《iKcamp出品|全網(wǎng)最新|微信小程序|基于最新版1.0開發(fā)者工具之初中級(jí)培訓(xùn)教程分享》涛漂。
包含:文章、視頻检诗、源代碼
iKcamp原創(chuàng)新書《移動(dòng)Web前端高效開發(fā)實(shí)戰(zhàn)》已在亞馬遜匈仗、京東、當(dāng)當(dāng)開售逢慌。
iKcamp最新活動(dòng)
與
“天天練口語”
小程序總榜排名第四悠轩、教育類排名第一的研發(fā)團(tuán)隊(duì),面對(duì)面溝通交流攻泼。