使用 Postman 的 Environments 和 Tests 簡化在不同環境中的切換步驟


調試 API 的時候,我們需要經常需要在本地、開發、生產來回切換,還需要面臨 Token 失效等的問題,讓人頭大,看到一些教程有介紹用 Postman 來簡化流程,但是實踐起來還是遇到一些問題,所以就有了這篇細致地介紹使用 Postman 的 EnvironmentsTests 來簡化在不同環境中切換的步驟,無感知地調試 API 的博客

手動更新 Token

  1. Environments 面板中 new 一個新的 Environment (環境),用於存儲當前環境的:Token、地址、用戶名、密碼,需要先填上地址、用戶名、密碼的 CURRENT VALUE

  1. Collections 中添加一個新的 Collection(集合),名字為 Demo,點擊右鍵選擇 Add Request 添加一個獲取 Token 的 Request。注意右上角的 Environment 需要選擇剛才定義的,這樣才可以通過 {{}} 獲取到 Environment 中變量的值。這里的 base URL、賬號、密碼都可以根據實際請求的情況進行設置

  1. 編寫這個 RequestTest(Test會在請求執行后自動運行),編寫 Test 目的是為了在請求后自動更新當前 Environment 的 Token,寫完就點擊 Send 發送請求。點擊右上角的眼睛,可以快速查看當前 Environment 變量

// 判斷相應的狀態碼是否為 200
pm.test("Status code is 200", function () {
    console.log((pm.response))
    pm.response.to.have.status(200);
});

// 更新當前 Environment 的 Token
console.log(pm.response.json())
var token = pm.response.json().token
pm.environment.set("token", token);

使用 Request

  1. 調用獲取 Token 的 Request,更新全局 Token

  2. 選擇 Collection,然后選擇 Edit

  1. 給整個 Collection 都設置上統一的 Authorization,Type 設置為 Bearer Token,Token 值則設置為 {{token}},就是上面設置進 Environment 的變量

  1. 新建一個 RequestAuthorization 選擇 Inherit auth from parent (繼承父級的 auth),這樣就可以避免手動填寫 Token 了

  1. 之后再使用就可以直接點擊 Duplicate,復制一個新的 Request 來使用

自動更新 Token

在切換 Environment 或者 Token 失效的時候,我們都要手動調用獲取 Token 的 Request,還是比較麻煩,我們可以進一步自動化,給整個 Collection 都設置上統一的 TestCollection 的任一 Request 的響應體的狀態碼為 401 (Unauthorized),就重新去獲取並更新 Token

  1. 選擇 Collection,然后選擇 Edit,編輯 Tests
// 定義發送登錄請求的方法
function sendLoginRequest() {
    // 定義請求體
    var data = {
        "password": pm.environment.get("password"),
        "telephone": pm.environment.get("username")
    }
    console.log(data)

    // 構造一個 POST 請求
    var baseUrl = pm.environment.get("base_url")
    const loginRequest = {
        url: baseUrl + '/admin_access_tokens',
        method: 'POST',
        header: 'Content-Type:application/json',
        body: {
            mode: 'raw',
            raw: JSON.stringify(data)
        }
    };

    // 發送請求
    pm.sendRequest(loginRequest, function (err, res) {
        if (err) {
            console.log("err:" + err);
        } else {
            const jsonData = res.json();
            // 自動更新 Collection 的 Token
            console.log("獲取到的 token:" + jsonData.token)
            var token = jsonData.token
            pm.environment.set("token", token);
            console.log("更新全局變量 token 成功")
        }
    });
}

if (pm.response.code === 401) {
    // 如果當前返回的狀態碼是 401,就更新 token
    sendLoginRequest()
}

  1. 這樣一來,如果 Token 錯誤,它會自動重新獲取並更新 Token,只需要再點一次 Send 就可以正常請求了

原理就是這個樣子,如果想在不同環境中自由切換,只需要定義多個 Environment 即可,使用時只需要在右上角就可以輕松切換。如果想每次請求都直接去獲取新 Token 也可以用 Pre-request Script;登錄是帶驗證碼的也可以參考:關於若依需要驗證碼,PostMan是如何登陸流程,總而言之,用上了這個 Tips 之后幸福感 up up up

參考資料

Learning Center - Postman
Postman 使用小技巧/指南
postman 一個也許可以節省你大量時間的小技巧
Postman設置全局變量token,自動更新token,統一設置headers(Authorization)
Postman在pre-request Script中執行登錄獲取token


推薦閱讀:
開源≠免費 常見開源協議介紹
簡單的 Shell 腳本入門教程
Docker 實踐及命令梳理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM