想起来之前在借助百度翻译接口做翻译小工具的时候,需要把参数进行md5加密后再传输。
而在平时的接口测试工作中难免会遇到类似这种请求参数,比如md5加密、时间戳、随机数等等。固然可以先计算出准确的参数,但这样的话修改成本就太大了,每次都得改,所以我们在发送请求前需要提前构造好参数供请求调用。
像随机数、md5数字签名这种通过python可以很便捷的实现。这里主要说一下如何在postman中实现自动生成md5等并调用,算是继续补充postman的使用技巧吧
 
继续拿百度通用翻译接口作为栗子:
接口文档如下
然后是一些说明
(1)签名是为了保证调用安全,使用MD5算法生成的一段字符串,生成的签名长度为 32位,签名中的英文字符均为小写格式;
(2)为保证翻译质量,请将单次请求长度控制在 6000 bytes以内。(汉字约为2000个);
(3)签名生成方法如下:
1、将请求参数中的 APPID(appid), 翻译query(q, 注意为UTF-8编码), 随机数(salt), 以及平台分配的密钥(可在管理控制台查看)
按照 appid+q+salt+密钥 的顺序拼接得到字符串1。
2、对字符串1做md5,得到32位小写的sign。
官方举例:将apple从英文翻译成中文:
请求参数:
q=apple
from=en
to=zh
appid=2015063000000001
salt=1435660288
平台分配的密钥: 12345678
生成sign:
>拼接字符串1
拼接appid=2015063000000001+q=apple+salt=1435660288+密钥=12345678
得到字符串1 =2015063000000001apple143566028812345678
>计算签名sign(对字符串1做md5加密,注意计算md5之前,串1必须为UTF-8编码)
sign=md5(2015063000000001apple143566028812345678)
sign=f89f9594663708c1605f3d736d01d2d4
完整请求为:
http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4
OK,下面进入正题,介绍如何在postman中生成随机数、md5签名,然后调用
1.首先要在Pre-request Script标签中编写脚本
因为要自动生成随机数、md5签名等传给接口,然后调用接口,即在请求前做好这些准备工作,所以要在Pre-request Script标签中编写脚本
2.编写思路
(1)把一些固定参数以及会被其他参数引用到的参数设置为环境变量,所以先在环境变量中添加appid和secretKey
(2)sign=appid+q+salt+密钥 的MD5值,可以看到要翻译的字符串q也是生成sign的一部分,但是每次翻译的内容不同,意味着q是变化的,所以不能把它写死到postman的params中。
开始想把q直接设置成环境变量,然后在Pre-request Script中读取这个环境变量,结果发现在Pre-request Script中是无法通过{{}}引用环境变量的;
然后就换个思路,还是把q写到Pre-request Script中,先把它定义为一个字符串,然后再创建一个环境变量,把q的值传给这个环境变量,最后在params中引用这个环境变量就好了(要翻译不同内容时,自行修改q的内容)
 
下面是完整的脚本和注释
//定义要翻译的字符串
var query = "霸王别姬"; //每次翻译不同内容时,在这里修改
pm.environment.set("q", query); //设置一个环境变量q,接收源字符串 //获取预先设置为环境变量的appid和secretKey
appid = pm.environment.get("appid");
secretKey = pm.environment.get("secretKey"); //定义一个随机数(32768, 65536)之间
var salt = parseInt(Math.random()*(32769)+32768,10);
//将随机数转换为字符串
var s = salt.toString();
console.log(salt);
//将生成的随机数设置为环境变量,方便传参
pm.environment.set("salt", salt); //定义一个由appid、要翻译的字符串、随机数、密钥组合成一个字符串
var str = appid + query + salt + secretKey;
console.log(str); //将str进行md5加密
var strmd5= CryptoJS.MD5(str).toString();
//let md5Str = CryptoJS.MD5(str).toString();
console.log(strmd5);
pm.environment.set("sign", strmd5); //将加密后的签名设置为环境变量方便后续调用
postman的params中按照如下方式引用
调用成功的话就是下面这个样子

postman(十二):发送携带md5签名、随机数等参数的请求的更多相关文章

  1. SNF开发平台WinForm之十二-发送手机短信功能调用-金笛-SNF快速开发平台3.3-Spring.Net.Framework

    1.调用前组装参数 2.调用发送信息服务脚本   .调用前组装参数: BaseSendTaskEntity entity = new BaseSendTaskEntity(); entity.Mess ...

  2. ASP.NET Core 2.2 基础知识(十二) 发送 HTTP 请求

    可以注册 IHttpClientFactory 并将其用于配置和创建应用中的 HttpClient 实例. 这能带来以下好处: 提供一个中心位置,用于命名和配置逻辑 HttpClient 实例. 例如 ...

  3. postman发送HTTP请求自动生成MD5签名

    POSTMAN是常用的接口测试工具 如何进行MD5签名呢? 代码如下: /** * 通过request.data获取body的内容,这个是postman内置变量 * 常用内置参数如下: * reque ...

  4. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  5. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十二:串口模块① — 发送

    实验十二:串口模块① — 发送 串口固然是典型的实验,想必许多同学已经作烂,不过笔者还要循例介绍一下.我们知道串口有发送与接收之分,实验十二的实验目的就是实现串口发送,然而不同的是 ... 笔者会用另 ...

  6. spring-boot-route(二十二)实现邮件发送功能

    在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送.在Spring项目中发送邮件需要封装复杂的消息体,不太方便.而在Spring Boot项目中发送邮件就太简单了,下面一起来看看 ...

  7. Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明

    紧接上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明>,这里专讲OAuth2.0. 理解OAuth2.0 首先我们通过一张图片来了解一下OAu ...

  8. (十二) 一起学 Unix 环境高级编程 (APUE) 之 进程间通信(IPC)

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  9. 《Django By Example》第十二章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第十二章,全书最后一章,终于到这章 ...

随机推荐

  1. 4. 语义"陷阱"

    1. 假定对于下标越界的数组元素取其地址也是非法的,那么对于本书3.6(该标题下为4.6)节中的bufwrite程序应该如何书写? void bufwrite(char *p, int n){ whi ...

  2. hashlib和hmac模块

    目录 一.hashlib模块 1.0.1 hash是什么 1.0.2 撞库破解hash算法加密 一.hashlib模块 1.0.1 hash是什么 hash是一种算法(Python3.版本里使用has ...

  3. Spring 中AOP及前后置增强案例

    1.AOP面向切面编程 面向切面编程的本质:面向切面编程,指扩展功能不修改源代码,将功能代码从业务逻辑代码中分离出来.  1主要功能:日志记录,性能统计,安全控制,事务处理,异常处理等等.  2主要意 ...

  4. mysql中的replace

    replace字面意思是替换,在mysql里面的运用是 如下图所示 1.  replace into test values(6, 'wowowo', 'new', 'japan') 这条语句则他会正 ...

  5. Python爬取前程无忧网站上python的招聘信息

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 我姓刘却留不住你的心 PS:如有需要Python学习资料的小伙伴可以 ...

  6. PHP+Mysql查询上一篇和下一篇文章实例

    简单的PHP+Mysql查询上一篇和下一篇文章实例,并输出上一篇和下一篇文章的标题和链接,适合新手学习 获取当前浏览文章id: $id = isset($_GET['id']) > 0 ? in ...

  7. Zipkin架构简介

    Zipkin基本概念 Span:基本工作单元,一次链路调用就会创建一个Span Trace:一组Span的集合,表示一条调用链路.举个例子:当前存在服务A调用服务B然后调用服务C,这个A->B- ...

  8. MySQL基础之数据管理【1】

    添加记录 insert [into] tbl_name[(col_name,...)] {value|values}(values...); --不指定字段名称时需要按照建表时的字段顺序给每一个字段赋 ...

  9. Spring Cloud Netflix Hystrix介绍和使用

    前面我们搭建了具有服务降级功能的Hystrix客户端,现在我们来详细了解下Hystrix的一些功能. Hystrix的意思是豪猪,大家都知道,就是长满刺的猪...实际上,它表明了该框架的主要功能:自我 ...

  10. Hive性能调优(二)----数据倾斜

    Hive在分布式运行的时候最害怕的是数据倾斜,这是由于分布式系统的特性决定的,因为分布式系统之所以很快是由于作业平均分配给了不同的节点,不同节点同心协力,从而达到更快处理完作业的目的. Hive中数据 ...