close
有些伺服器會要求request跟response都需要加解密。
在post的pre-request跟test功能可以解決這問題 pre-request是掌管request打出去前要做的事 test功能是掌管response 收到之後要做的事 用這兩個功能可以解決這個問題(使用javascript)
假設伺服器端用php 加解密的method是這樣
...
// 收到request後
openssl_decrypt($str, 'AES-128-ECB', $key, 0);
// 要返回response的時候
openssl_encrypt($str, 'AES-128-ECB', $key, 0);
那麼postman的pre-request可以這樣寫
function encrypt(plainText) {
const cipher = CryptoJS.AES.encrypt(
CryptoJS.enc.Utf8.parse(plainText),
CryptoJS.enc.Utf8.parse(pm.environment.get("salt")),
{
mode: CryptoJS.mode.ECB,
}
)
return CryptoJS.enc.Base64.stringify(cipher.ciphertext);
}
//加入一些伺服器需求的header
pm.request.headers.add({key: "deviceType",value: pm.environment.get("deviceType")});
// 把送出去的body替換成function加密後的東西
pm.request.body.raw = encrypt(pm.request.body.raw)
test的部分可以這樣寫
function decrypt(cipher) {
return CryptoJS.AES.decrypt(
cipher,
CryptoJS.enc.Utf8.parse('b56c839d2854c5c9'),
{
mode: CryptoJS.mode.ECB,
}
).toString(CryptoJS.enc.Utf8)
}
// 這裡是重點 使用visualizer在visualiz分頁 可以編寫html 來呈現response,如果狀況複雜的話可以畫圖。
// 以這裡的狀況只是把解密後的資料 整理成json字串而已
pm.visualizer.set('<pre>{{response}}</pre>',
{response: JSON.stringify(JSON.parse(decrypt(pm.response.text()))['data'], null, 2)})
有關visualizer的相關知識 可以到這裡來找文件
文章標籤
全站熱搜