接口参数处理封装
//传入的参数是对象类型,比如{categoryId:28}
function getParameter(data) {
var parameter = '?'
for (var item in data) { //for in循环参数
//拼接参数,会得到类似 ?categoryId=28&
parameter = parameter + item + '=' + data[item] + '&'
}
//最后会多出一个&符合,用substring提取字符串中介于两个指定下标之间的字符。
parameter=parameter.substring(0,parameter.length-1)
console.log(parameter)
//返回处理后的参数字符串
return parameter
}
在调用时可以这样调用
*先定义一个方法,这边request也进行了封装
//接口方法listHomeBanner
export const listHomeBanner = (data) => {
console.log(data) // 传入的参数对象
return request({
//baseUrl定义公共地址,假设为www.baidu/
//${getParameter(data)}调用方法后返回的接口参数为?categoryId=28
//最后拼接在一起成为www.baidu/bannerAdvertise/list?categoryId=28
url: baseUrl + `bannerAdvertise/list${getParameter(data)}`,
method: 'GET'
})
}
*调用上面定义的方法来发送请求
listHomeBanner({categoryId:28}).then(res=>{
console.log(res.data) //返回的数据通过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) => {
//发起 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'
})
}
})
})
}