实现一个网络请求(可实现携带 token 和不携带 token 访问api)api
request.js缓存
###封装请求是否自动带上token
const API_BASE_URL = 'https://***.com';
const REQUEST = (url, method, data = {}) => {
return new Promise((resolve, reject) => {
wx.request({
url: API_BASE_URL + url,
method: method,
data: data,
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
success(res) {
resolve(res.data)
},
fail(error) {
reject(error)
}
})
})
}
const HTTP = (url, method, data, isToken = true) => {###isToken请求是否自动带上token值,默认为true
return new Promise((resolve, reject) => {
if (isToken) { ###请求带token
let token = wx.getStorageSync('token')
if (token) { ###缓存有token直接用
data = Object.assign({
openId: token
}, data)
REQUEST(url, method, data).then(res => {
resolve(res)
})
} else { ###缓存没有token,用code换取
wx.login({
success: res => {
if (res.code) {
getUserAuthor({
code: res.code
}).then(res => {
wx.setStorageSync('token', res.data.openid)
data = Object.assign({
openId: res.data.openid
}, data)
REQUEST(url, method, data).then(res => {
resolve(res)
})
})
}
}
})
}
} else { ###请求不带token
REQUEST(url, method, data).then(res => {
resolve(res)
})
}
})
}
let getUserAuthor = (code) => {
return REQUEST('/auth/getUserAuthor', 'get', code)
}
let getGoldCount = (data) => {
return HTTP('/mini/user/getGoldCount', 'get', data, true)
}
let getGoods = (data) => {
return HTTP('/goods/getGoods', 'get', data, false)
}
export default {
getGoldCount: getGoldCount,
getGoods: getGoods
}
复制代码
index.js(调用页面)bash
import HTTP from '../../utils/request';
Page({
data: {
},
onLoad: function (options) {
const goodsId = '040e5a34-43c2-4f19-b1a0-a5d157f15062';
this.getGoldCount();
this.getGoods({ goodsId: goodsId});
},
getGoldCount() {
HTTP.getGoldCount().then((res) => {})
},
getGoods(data){
HTTP.getGoods(data).then((res) => {})
}
})
复制代码