编 写:袁 亮 时 间:2017-02-09 说 明:在postman中自定义签名方式调用接口 一、目的 1、电商项目内部api接口使用的签名方式导致在postman中不能使用 需要在postman中,自行实现签名方式以方便测试API接口 2、接口地址 https://api.shop.ci123.com/apidoc/ 二、实现原理 1、在postman实际调用接口前,可以执行自定义js,从而实现数据签名 2、自定义JS可以获取到请求参数、链接参数,并且可以自定义变量 三、实现过程 1、增加链接参数 params appid:{{appid}} 2、接口post参数增加 expire:{{expire}} mdstr:{{mdstr}} 3、添加预执行脚本 Pre-request script var appid = '10101'; var appsercet = '8e2160ec2b07f1faca9055be530bf09d'; // 定义appid postman.setEnvironmentVariable("appid", appid); // 定义时间戳 var expire = new Date().getTime(); postman.setGlobalVariable("expire", expire); // 数据签名 var data = []; jQuery.each(request.data, function(key, value){ if (key == 'expire') { // request里存储的是定义的值,而不是我们赋的值,需要单独处理 value = expire; } if (key != 'mdstr') { data.push(key+'='+value); } }); data.sort(); var str = data.join('&')+appsercet; var mdstr = CryptoJS.MD5(str).toString().toLowerCase(); postman.setGlobalVariable("mdstr", mdstr); 四、环境切换 1、变量 环境变量:EnvironmentVariable 在整个environment内都可以用 ps:在预执行脚本中,需要用environment.变量名来获取,不能执行获取到 全局变量:GlobalVariable 可以在任意环境下使用 ps:预执行脚本中定义的变量并不能在url、params使用 原因是因为拼接在预执行脚本之前 单在body里又是可以用的,数据组装在预执行脚本代码之后 自定义变量: 仅能在预执行脚本中用 2、环境管理 2.1 可以将不同环境的变量定义在环境变量中 比如测试机host,比如appid和appsecret等 2.2 在url、params、body中的数据,预执行脚本等地方使用 3、接口调用 3.1 选择环境 3.2 接口地址、参数等使用环境变量{{变量名}} 3.3 添加接口特定参数 4、添加预执行脚本 // 定义时间戳 var expire = new Date().getTime(); postman.setGlobalVariable("expire", expire); // 数据签名 var data = []; jQuery.each(request.data, function(key, value){ if (key == 'expire') { // request里存储的是定义的值,而不是我们赋的值,需要单独处理 value = expire; } if (key != 'mdstr') { data.push(key+'='+value); } }); data.sort(); var str = data.join('&')+environment.appsercet; var mdstr = CryptoJS.MD5(str).toString().toLowerCase(); postman.setGlobalVariable("mdstr", mdstr);