文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

postman数据加解密实现APP登入接口模拟请求

2024-04-02 19:55

关注

主要使用到的Postman功能

简要界面

数据加解密

接口要求对params的数据,已json形式进行加密发送。

各种参数设置

这里的参数是之后脚本使用的基础数据,也可以类似相当于APP登入界面需要填写的数据。

接口参数 

这里的请求头数据,为系统接口约定的一些既定规则参数。

请求头参数 

真正发送的数据:

对,就一个参数,具体的参数在脚本处理之后,进行加密之后,也就是一个很长的字符串 ╮(╯_╰)╭

body数据.

请求处理脚本[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接口请求的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯