request 中url拼接排序参数与签名算法
一、参数要求:
{
appId:应用在后台创建应用时分配的应用编号,与应用密钥一一对应
sign:按照当前请求参数名的字母序进行升序排列(排序时区分大小写,除sign外,其它值不为空的参数都参与签名), 将所有参数值组合以key=value 的形式拼成一个新字符串,不同参数值“&”之间没有任何分隔符,最后加上对应的签名密钥appKey 进行签名运算。 如进行MD5签名运算的串为 MD5(key1=value1&key2=value2appKey)
time: 1970年以来的毫秒数,每次请求都要更新,有效期5分钟
version: 接口版本号,目前默认写1.0
}
二、请求path示例:http://test.com/**/**?account=string&appId=string&sign=string&time=0&version=string
三、代码实现:
# coding=utf-8 from urllib.parse import urlencode from collections import OrderedDict import hashlib from base_utils.crypte import Md5 import time params = { "version": "1.0", "account": "zhangsan", "appId": "gyAppId", "time": int(time.time() * 1000) } def md5(self, data): self.md5 = hashlib.md5() self.md5.update(data.encode("utf-8")) return self.md5.hexdigest() def url_join(server, uri, appkey, params): args = OrderedDict() for key in sorted(params.keys()): args.update({key: params[key]}) nparams = urlencode(args) args = urlencode(args) + appkey sign = Md5().md5(args) prefix, suffix =nparams.split("&time=") print("".join([server, uri, '?',prefix, "&sign=", sign, "&time=", suffix])) return "".join([server, uri, '?',prefix, "&sign=", sign, "&time=", suffix])
三十六般武艺,七十二般变化,修练出个人品牌并发出光芒
分类:
接口自动化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律