接口签名校验

本文介绍了如何使用Python对对象属性值进行小写排序,并通过MD5算法生成请求参数的签名,以实现定制请求头。重点讲解了`sortObjectKey`、`paramStringify`和`defineConfig`函数的用法及其实现细节。
摘要由CSDN通过智能技术生成

import MD5 from ‘blueimp-md5’

/** 对象属性值小写 */
function sortObjectKey(source) {
if (!source) return
let target = {}
Object.keys(source)
.sort()
.forEach(key => {
if (source[key] !== undefined) {
target[key.toLowerCase()] = source[key]
}
})
return _sortObjectKey(target)
}

function _sortObjectKey(source) {
if (!source) return
let target = {}
Object.keys(source)
.sort()
.map(key => {
if (source[key] !== undefined) {
target[key] = source[key]
}
})
return target
}

/** 将请求参数格式按键值对应的顺序转换成字符串 */
function paramStringify(data) {
if (!data) return ‘’
let str = []
for (let i in data) {
if (!(data[i] instanceof Object)) {
let val = data[i] + ‘’
str.push(i + ‘’ + val.toLowerCase())
} else {
str.push(i + ‘’ + JSON.stringify(data[i]))
}
}
return str.join(‘’)
}

function getValueNull(arg) {
if (typeof arg === ‘object’) {
const obj = {}
for (const key in arg) {
if (arg[key] !== null) {
obj[key] = arg[key]
}
}
return obj
} else {
return arg
}
}

// 自定义请求头
export default function defineConfig(data) {
data = getValueNull(data)
const timestamp = Math.round(new Date().valueOf() / 1000).toString() || ‘’
let sortedParams = sortObjectKey(data)
let signStr = paramStringify(sortedParams).trim().toLowerCase()
console.log(‘signStr’, signStr)
let tokenHeader = {}
// 增加自定义headers
Object.assign(tokenHeader, {
TimeStamp: timestamp,
Sign: MD5(${signStr}${timestamp})
})
return tokenHeader
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值