實現一個網絡請求(可實現攜帶 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) => {})
}
})
複製代碼