微信小程序request請(qǐng)求封裝,驗(yàn)簽代碼實(shí)例
這篇文章主要介紹了微信小程序request請(qǐng)求封裝,驗(yàn)簽代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
1.公共文件util添加
request請(qǐng)求
//簡(jiǎn)單封裝請(qǐng)求
function request(params, path, isShowLoading = true, goBack = false, type = 'none', obj={}) {
try {
console.log(path)
let NowTime = Date.parse(new Date()) / 1000;
let defaultParams = {
platform: app.globalData.platform,
appVersion: app.globalData.version,
deviceId: uuId(),
timestamp: params.timestamp ? params.timestamp : NowTime
};
params = Object.assign(params, defaultParams);
let requestParams = signature(params)
isShowLoading && wx.showLoading && wx.showLoading({
title: '加
中...'
})
return new Promise((resolve, reject) => {
let header;
obj.header = obj.header || {};
console.log('獲取ptkey')
console.log(plugin.getJdListStorage(['guid', 'pt_key', 'pt_token', 'pt_pin']))
let [GUID = '', KEY = '', TOKEN = '', PIN = ''] = plugin.getJdListStorage(['guid', 'pt_key', 'pt_token', 'pt_pin']),
_cookie = `guid=${GUID}; pt_pin=${encodeURIComponent(PIN)}; pt_key=${KEY}; pt_token=${TOKEN};${wx.getStorageSync("accessToken_v1")}`, {
cookie
} = obj.header;
console.log(cookie)
obj.header.cookie = cookie ? `${cookie};${_cookie}` : _cookie;
if (!isEmpty(getToken())) {
obj.header.authorization = 'Bearer ' + getToken()
}
console.log(obj.header)
wx.request({
url: getApp().globalData.host + path, //獲取app.js 全局ip
data: requestParams,
method: 'POST',
header: obj.header,
success: function(res) {
console.log(res)
isShowLoading && wx.hideLoading && wx.hideLoading()
// 缺少登錄失效的處理方法
if (res.statusCode == 200 && res.data.code == 200) {
if (isEmpty(res.data.data) || res.data.data == true) {
resolve('true')
return
}
if (res.data.data) {
resolve(res.data.data);
} else if (res.data.data == 0){
resolve(res.data.data);
} else {
resolve('true')
}
} else if (res.statusCode == 200 && res.data.code == 401) { //token過(guò)期
Login();
resolve(false);
return;
} else {
//需要再判斷code碼
// errorShow(res.data.msg, goBack, type);
errorShow(res.data.msg);
resolve(false);
// reject(res.data.res);
}
},
fail: function(err) {
console.log(err)
// 因?yàn)閔ide會(huì)讓showToast隱藏
isShowLoading && wx.hideLoading && wx.hideLoading()
errorShow('網(wǎng)絡(luò)請(qǐng)求失敗');
reject(new Error('Network request failed'))
// throw new Error('Network request failed')
},
complete: function() {}
})
})
} catch (err) {
console.log(err)
errorShow('網(wǎng)絡(luò)請(qǐng)求失敗');
return false;
}
}
2.signature 簽名
//生成簽名
function signature(params) {
let keyArr = []
for (let key in params) {
keyArr.push(key)
}
let arr = keyArr.sort();
let result = "";
arr.map((item, index) => {
if (params[item] == null || params[item] == undefined) {
delete params[item];
arr.splice(index, 1);
}
})
console.log("arr")
console.log(arr)
arr.map((item, index) => {
if (Array.isArray(params[item]) == true) {
let res = ''
let arr = params[item]
arr.map(obj => {
console.log(typeof(obj))
if (typeof(obj) != 'object') {
res += obj
} else {
for (let key in obj) {
if (Array.isArray(obj[key])) {
let val = '';
obj[key].map(item => {
val += item
})
res += key + val
} else {
res += key + obj[key]
}
}
}
})
result += '' + item + '' + res
} else {
result += '' + item + '' + params[item]
}
})
console.log("result")
console.log(result)
let pos;
if (isEmpty(getToken())) {
pos = result
} else {
pos = result + getToken()
}
console.log(pos)
console.log("signature")
let signature = sha256.hmac.create('pos_secret').update(pos).hex().toLowerCase(); //需要引入sha256.min.js
console.log(signature)
let obj = {
'signature': signature
}
return Object.assign(params, obj);
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 微信小程序wx.request攔截器使用詳解
- 微信小程序設(shè)置全局請(qǐng)求URL及封裝wx.request請(qǐng)求操作示例
- 微信小程序使用wx.request請(qǐng)求服務(wù)器json數(shù)據(jù)并渲染到頁(yè)面操作示例
- 微信小程序使用request網(wǎng)絡(luò)請(qǐng)求操作實(shí)例
- 微信小程序wx.request實(shí)現(xiàn)后臺(tái)數(shù)據(jù)交互功能分析
- 微信小程序網(wǎng)絡(luò)請(qǐng)求wx.request詳解及實(shí)例
- 微信小程序 wx.request(接口調(diào)用方式)詳解及實(shí)例
- 微信小程序 wx.request合法域名配置詳解
相關(guān)文章
JS仿淘寶實(shí)現(xiàn)的簡(jiǎn)單滑動(dòng)門(mén)效果代碼
這篇文章主要介紹了JS仿淘寶實(shí)現(xiàn)的簡(jiǎn)單滑動(dòng)門(mén)效果,可實(shí)現(xiàn)按字母分類(lèi)滑動(dòng)切換的功能,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-10-10
微信小程序 多行文本顯示...+顯示更多按鈕和收起更多按鈕功能
js實(shí)現(xiàn)滾動(dòng)條滾動(dòng)到頁(yè)面底部繼續(xù)加載
layui字體圖標(biāo) loading圖標(biāo)靜止不旋轉(zhuǎn)的解決方法
JavaScript錯(cuò)誤處理之分析 Uncaught(in promise) error的
JavaScript通過(guò)改變文字透明度實(shí)現(xiàn)的文字閃爍效果實(shí)例

