- 在postman中使用Pre-request Script
- 在Pre-request Script配置变量在参数中使用
- CryptoJS常用方法的使用
- 利用forgeJS进行RSA加解密
- 其他小技巧
- 参考资料
在postman中使用Pre-request Script
Pre-request Script的语法就是js的语法,在这里可以编写任意的逻辑。例如:
可以看到经过判断在console控制台输出了日志
在Pre-request Script配置变量在参数中使用
通过在Pre-request Script中编写内容,我们的最终目的一般是得到一个参数值,然后应用在请求中。下面是一个简单的演示:
-
首先点击 ,新建一个环境配置
-
单击add添加一个环境
-
输入环境名称,点击add
-
可以看到这里多出了一个环境设置,选中该设置。
’ -
在Pre-request Script中编写如图代码,点击发送。
var pathName = "test"; ("pathName",pathName);
参数不仅可以应用到url中还可以放在param、header、body等的参数中,这里不再进行演示。
-
可以从日志和code中看到传值,url中的变量已经被替换为test
-
在环境变量中也可以看到该参数
除上述方法外,还可以把变量放在全局中,这样可以不用新建环境,如:
var pathName = "test";
("pathName",pathName);
postman的语法大家可以自己去探索,本文中将不再进行叙述。
CryptoJS常用方法的使用
- MD5加密
CryptoJS.MD5("待加密数据").toString();
这里可以看到对“test”字符串进行了MD5加密放在了url中
- SHA256加密
CryptoJS.SHA256("待加密数据").toString();
- HmacSHA256加密
CryptoJS.HmacSHA256("待加密数据", "秘钥")
- base64加密解密
// 加密 写法1
var utf8Str = .("待加密字符串")
.(utf8Str)
// 加密 写法2
.("待加密字符串").toString(.Base64)
// 解密
.("带解密").toString(.Utf8)
// .("字符串") 和 "字符串".toString(.Base64) 是相同的含义
- AES简单加密解密
// 加密
('待加密字符串', '秘钥').toString()
// 解密
('待解密字符串', '秘钥').toString(.Utf8)
- 自定义AES加解密函数
const key = .("秘钥"); //这里使用base64 或者 utf8 要看要求,加解密一致即可
const iv = .('偏移量'); //十六位十六进制数作为密钥偏移量
// 加密 1
function Encrypt(word) {
let srcs = .(word);
let encrypted = (srcs, key, { iv: iv, mode: , padding: .Pkcs7 });
return ();
}
// 解密 1
function Decrypt(word) {
let decrypt = (word, key, { iv: iv, mode: , padding: .Pkcs7 });
let decryptedStr = (.Utf8);
return ();
}
// 加密 2
function Encrypt(word) {
let srcs = .(word);
let encrypted = (srcs, key, { iv: iv, mode: , padding: .Pkcs7 });
return ();
}
// 解密 2
function Decrypt(word) {
let encryptedHexStr = (word);
let srcs = .(encryptedHexStr);
let decrypt = (srcs, key, { iv: iv, mode: , padding: .Pkcs7 });
let decryptedStr = (.Utf8);
return ();
}
利用forgeJS进行RSA加解密
测试案例
postman内置的js不支持进行RSA加解密,所以需要引入forgeJS来实现。
引入外部js主要有三种方式
- 直接将整个js文件内容复制到Pre-request Script中
- 使用远程脚本
if (!("forgeJS")) { ("http://localhost:8080/", function (err, res) { if (err) { (err); } else { ("forgeJS", ()); } }) } else { eval(("forgeJS")) // 加解密内容 }
- 将整个js脚本放到环境变量中,使用eval()函数引入内容,这种方法会导致postman修改环境变量特别卡,不建议使用
eval(("forgeJS")) const public_key = '-----BEGIN PUBLIC KEY-----\n' + 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDORoOSW2gbHl6s/YmS1jWxb954\n' + 'X/jflZ2dK65oM/Bxii2Iba80IiC9+Sa1phmOVDAk+IVDsPNZ+YJ2Qg0hPmoLSLxe\n' + 'f2A6ySJPl5su8TaGOuVZg1SRyk55bjHymQUnxryD/ml1EmBUaGcrs9FCiVBy38kg\n' + 'eZNbCexucVQxn6OYlwIDAQAB\n' + '-----END PUBLIC KEY-----' const private_key = '-----BEGIN PRIVATE KEY-----\n' + 'MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAM5Gg5JbaBseXqz9\n' + 'iZLWNbFv3nhf+N+VnZ0rrmgz8HGKLYhtrzQiIL35JrWmGY5UMCT4hUOw81n5gnZC\n' + 'DSE+agtIvF5/YDrJIk+Xmy7xNoY65VmDVJHKTnluMfKZBSfGvIP+aXUSYFRoZyuz\n' + '0UKJUHLfySB5k1sJ7G5xVDGfo5iXAgMBAAECgYEAk6KQZN4bQt2XsYS9RGUghOCm\n' + 'f81g2NXCu00aROZ3vyvArxaiAVQzzwRWGkjJnb7PvoZJC0vIwKr+HxnjP9nmFufd\n' + '+0EnBT+imYSzrfZhfGGwyI6EIyy/XcoW5lf0xltx3w9mJicnR9kMzNtZ5mNGPMNn\n' + 'CgAgjvZqnWYb+f6tb/ECQQD0tdpg8ts3puXclPe51my+LbKhEbyFSMzvtMTDCRmO\n' + 'd0jrmZhQomsZacC8+l+2l6WTj5vrhVQlAVUeUJ7kldQNAkEA18q53wor6a4Cv0OL\n' + 'xFzBWXRCMVFfyCWAFQUpTSGrIM/X4Lx30IZCShtvkdh1ky39b9T6lpOjES7MK4Dh\n' + 'xttCMwJAUGBi6DEcm/zvxzIO5DVv5k9wOsNunoC4/4rqjf0xLcA0bV43z1RpxSEd\n' + 'M3UxdvH8aqli10slxjnX0Ws9pWspCQJBALqSncgYzETbXaauqO5a4BUOrphjafPr\n' + 'cGU8NCxrGsFg0p6NdO5G1pOqSvmHdIiPL9t8AjkkZs3Zb0+BvDOpqP8CQQDZhfh4\n' + '/c/Qzp4szj7+GXTZ1cmGwAuFo2/9uiumUAS3f19EpgoV9u9eyJ4gZPEBDvAjO961\n' + 'kAjdja4DAy4SbCXy\n' + '-----END PRIVATE KEY-----' //encrypt text "plaintext" var publicKey = (public_key); var encryptedText = .encode64(("plaintext", 'RSA-OAEP', { md: .(), mgf1: { md: .() } })); ("encrypted text:" + encryptedText); // decrypt text var privateKey = (private_key); var decryptedText = (.decode64(encryptedText), 'RSA-OAEP', { md: .(), mgf1: { md: .() } }); ("dectypted text:" + decryptedText);
其他小技巧
- {{$guid}}:添加一个V4风格GUID(如: aa002-44ac-45ca-aae3-52bf19650e2d)
- {{$timestamp}}:将当前的时间戳,精确到秒
- {{$randomInt}}:添加0和1000之间的随机整数
- 在js脚本中
(new Date()) // 时间戳
参考资料
/gina61/articles/
/p/b107452e6071
/xiaochongchong/p/
/topics/14869