在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
主要使用到的Postman功能
数据加解密
各种参数设置
真正发送的数据:
请求处理脚本[Pro-request Script]脚本的处理直接看代码即可。 脚本常用的一些封装类是postman封装的,比如:
【在代码编写框边上,有postman提供的常用操作代码生成,灰常好用的】 具体的代码: // 设置环境变量参数,用于其他请求使用 pm.environment.set("lkm-sys-id",pm.request.headers.get("lkm-sys-id")); pm.environment.set("lkm-app-id",pm.request.headers.get("lkm-app-id")); pm.environment.set("lkm-organ-id",pm.request.headers.get("lkm-organ-id")); pm.environment.set("lkm-app-ver",pm.request.headers.get("lkm-app-ver")); // json化参数,用于数据签名 const paramsString = request.url.split('?')[1]; const eachParamArray = paramsString.split('&'); let params = {}; eachParamArray.forEach((param) => { const key = param.split('=')[0]; const value = param.split('=')[1]; Object.assign(params, {[key]: value}); }); console.log(params); // 数据的处理 var requestParams = params; console.log(requestParams); // 接口定义的数据签名处理 var timestamp = Math.round(new Date()); pm.environment.set("timestamp",timestamp); var shuijishu = "XO337hNxWyNsOlDw"; pm.environment.set("shuijishu",shuijishu); // 数据签名,系统接口约定的 var lkmSign = pm.request.headers.get("lkm-sys-id") + pm.request.headers.get("lkm-app-id") + "1122334455667788" + timestamp + shuijishu + "" ; pm.environment.set("lkmSign",CryptoJS.MD5(lkmSign).toString().toUpperCase()); // ================== 数据签名处理结束 =================================== // ===================== 加解密数据 ========================================== /// aesdata 处理 var aesData = dealWithAesData(requestParams); pm.environment.set("data", aesData); // 这个就是上面截图被用到的最终发送的需要的数据 /// ↓↓↓↓↓↓↓↓↓↓↓↓ 常用AES加解密方法 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ /// // aesData数据处理 (content 传字典) function dealWithAesData(content) { console.log('aesData明文: ' + JSON.stringify(content)); const key = CryptoJS.enc.Utf8.parse("****************"); const iv = CryptoJS.enc.Utf8.parse("0000000000000000"); const encrypted = CryptoJS.AES.encrypt(JSON.stringify(content), key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); //CBC return encrypted.toString(); } 响应处理脚本[Tests]
具体的代码: // 返回数据处理 var jsonData = JSON.parse(responseBody); var responseData = JSON.parse(decryptResponseData(jsonData.data)); // 数据解密 let success = responseData['success']; var responseResult = responseData["data"]; // 数据token记录,左右后续接口使用的 try { let token = responseResult["token"]; pm.environment.set("token", "Bearer "+token); console.log("token:" + token); } catch (err) { tests['Expect response data to be valid token'] = false; tests[`Response data: ${responseResult}`] = true; console.error(err); } // 数据日志打印 console.log("jsonData:以下对象是响应数据") console.log(jsonData); console.log("responseData:以下对象是解析的第一层数据") console.log(responseData); console.log("responseResult:以下对象是解析的第二层数据") console.log(responseResult); // 环境变量设置,用于登入后,其他接口使用。 console.log(responseResult.agentId); pm.environment.set("agentId",responseResult.agentId); pm.environment.set("agentCode",responseResult.agentCode); pm.environment.set("agentName",responseResult.agentName); // pm.environment.set("token",responseResult.token); // 设置断言 postman面上提供好个通用的断言生成,可以试试 tests["业务返回码code=200,成功!"] = responseData.code === 200 ; /// 解密返回数据 function decryptResponseData(content) { const key = CryptoJS.enc.Utf8.parse("*****************"); const iv = CryptoJS.enc.Utf8.parse("0000000000000000"); const decrypt = CryptoJS.AES.decrypt(content, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); return decryptedStr.toString(); } 结果的样子模拟加密接口的请求差不多就这个样子了,至于别的操作,就要以后再学习了,更多关于postman登入APP接口请求的资料请关注极客世界其它相关文章! |
请发表评论