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的相關知識 可以到這裡來找文件

arrow
arrow
    文章標籤
    程式
    全站熱搜

    工程師黑田 發表在 痞客邦 留言(0) 人氣()