接口參數(shù)處理封裝
//傳入的參數(shù)是對象類型革半,比如{categoryId:28}
function getParameter(data) {
var parameter = '?'
for (var item in data) { //for in循環(huán)參數(shù)
//拼接參數(shù),會得到類似 ?categoryId=28&
parameter = parameter + item + '=' + data[item] + '&'
}
//最后會多出一個&符合谅河,用substring提取字符串中介于兩個指定下標之間的字符老虫。
parameter=parameter.substring(0,parameter.length-1)
console.log(parameter)
//返回處理后的參數(shù)字符串
return parameter
}
在調用時可以這樣調用
*先定義一個方法,這邊request也進行了封裝
//接口方法listHomeBanner
export const listHomeBanner = (data) => {
console.log(data) // 傳入的參數(shù)對象
return request({
//baseUrl定義公共地址,假設為www.baidu/
//${getParameter(data)}調用方法后返回的接口參數(shù)為?categoryId=28
//最后拼接在一起成為www.baidu/bannerAdvertise/list?categoryId=28
url: baseUrl + `bannerAdvertise/list${getParameter(data)}`,
method: 'GET'
})
}
*調用上面定義的方法來發(fā)送請求
listHomeBanner({categoryId:28}).then(res=>{
console.log(res.data) //返回的數(shù)據(jù)通過res來獲取
this.setData({
list: res.data
})
}),
request接口封裝
//首先接收一個對象,接收類似以下對象叶骨,沒有傳默認為{}
/*{
url: baseUrl + `bannerAdvertise/list${getParameter(data)}`,
method: 'GET'
}*/
const request = (options = {}) => {
//進行對象的結構賦值,把對象里的url,data,method依次賦值過去
let {
url,
data,
method
} = options
let token = wx.getStorageSync('token')
//返回Promise對象
return new Promise((resolve, reject) => {
//發(fā)起 HTTPS 網絡請求
wx.request({
url: url,
data,
header: token ? {
token: token
} : {},
method,
success: res => {
if (res.data.code === 0) { //請求成功
resolve(res.data)
} else if (res.data.code === 401) {
console.log("用戶信息失效,請重登錄")
//用戶信息失效祈匙,跳轉到登錄頁面重新登錄
} else {
wx.hideLoading()
console.log('錯誤', res.data.msg)
}
},
fail: err => {
console.log('網絡異常')
wx.showToast({
title: '網絡異常',
icon: 'none'
})
}
})
})
}