微信小程序request请求封装,验签
1/ 公共文件util添加
request请求
//简单封装请求
function request(params, path, isShowLoading = true, goBack = false, type = 'none', obj={}) {
try {
console.log(path)
let NowTime = Date.parse(new Date()) / ;
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 == && res.data.code == ) {
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 == ){
resolve(res.data.data);
} else {
resolve('true')
}
} else if (res.statusCode == && res.data.code == ) { //token过期
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)
// 因为hide会让showToast隐藏
isShowLoading && wx.hideLoading && wx.hideLoading()
errorShow('网络请求失败');
reject(new Error('Network request failed'))
// throw new Error('Network request failed')
},
complete: function() {}
})
})
} catch (err) {
console.log(err)
errorShow('网络请求失败');
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, );
}
})
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);
}
3/ util文件引入
const app = getApp()
const sha256 = require('../libs/sha256.min.js');
微信小程序request请求封装,验签的更多相关文章
- 微信小程序 request请求封装
在utils文件夹新建文件utils.js,封装代码如下: 小程序升级后内部不自带Promise方法,需外部引入Promise方法 var sendRequest = function (url, ...
- 微信小程序request请求封装
var app = getApp(); function request(url,postData,doSuccess,doFail,doComplete){ var host = getApp(). ...
- mpvue学习笔记-之微信小程序数据请求封装
简介 美团出品的mpvue已经开源出来很久了,一直说要进行一次实践,这不最近一次个人小程序开发就用上了它. 看了微信官方的数据请求模块--request,对比了下get和post请求的代码,发现如果在 ...
- 微信小程序request请求的封装
目录 1,前言 2,实现思路 3,实现过程 3.1,request的封装 3.2,api的封装 4,实际使用 1,前言 在开发微信小程序的过程中,避免不了和服务端请求数据,微信小程序给我们提供了wx. ...
- 微信小程序request请求之GET跟POST的区别
1.GET 例子: wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { 'content ...
- 微信小程序request请求动态获取数据
微信小程序开发文档链接 1 后台代码: clickButton:function(){ var that = this; wx.request({ url: 'http://localhost:909 ...
- 微信小程序request请求实例,网络请求。
最近微信小程序开始开放测试了,小程序提供了很多api,极大的方便了开发者,其中网络请求api是wx.request(object),这是小程序与开发者的服务器实现数据交互的一个很重要的api. 官方参 ...
- 微信小程序request(ajax)接口请求封装
微信小程序request(ajax)接口请求封装 最近在进行小程序的编写,需要调用后端接口,经常要用到wx.request方法,所以就自己封装了一下,简化一下代码,如果能给大家提供帮助更好,在封装的时 ...
- 微信小程序数据请求方法wx.request小测试
微信小程序数据请求方法 wx.request wxml文件: <view> <textarea value="{{textdata}}"/> </vi ...
随机推荐
- vue中前进刷新、后退缓存方案收集
来源掘金: https://juejin.im/post/5b2ce07ce51d45588a7dbf76 来源博客园 https://www.cnblogs.com/wonyun/p/8763314 ...
- 给DataFrame的列命名或重命名
1.读取文件的时候重命名 names = new_col,可以在读取文件的时候,给出新列名. new_col = ['new1', 'new2',... , 'newn'] pd.read_csv(' ...
- nginx部署网站step by step
安装后,修改nginx.conf,在httpd{}中添加 include /nginx/vhosts/*.conf; 如果没有vhosts就新建一个文件夹 *.conf是一种正则表达式用法,表示纳入一 ...
- 写在centos7 最小化安装之后
1.最小化安装之后首先解决联网问题(https://lintut.com/how-to-setup-network-after-rhelcentos-7-minimal-installation/) ...
- 一种sqlor的拆分
原脚本declare @Phone nvarchar(50)declare @CompanyNO nvarchar(50)set @Phone='13914124223'set @CompanyNO= ...
- cdh本地源安装-自用
yum 安装cm 参考官网 主机名 /etc/hosts hostnamectl set-hostname foo-1.data.com hostnamectl set-hostname foo-2. ...
- CSS 内边距 padding 属性
CSS padding 属性定义元素边框与元素内容之间的空白区域. ㈠padding(填充) ⑴当元素的 padding(填充)内边距被清除时,所释放的区域将会受到元素背景颜色的填充. ⑵单独使用 p ...
- jquery pageX属性 语法
jquery pageX属性 语法 作用:pageX() 属性是鼠标指针的位置,相对于文档的左边缘. 语法:event.page 参数: 参数 描述 event 必需.规定要使用的事件.这个 ...
- UVA 10491 Cows and Cars (全概率公式)
#include<bits/stdc++.h> #include<stdio.h> #include<iostream> #include<cmath> ...
- 2002: [Hnoi2010]Bounce 弹飞绵羊(分块)
2002: [Hnoi2010]Bounce 弹飞绵羊 时间限制: 10 Sec 内存限制: 259 MB 题目描述 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他 ...