Postman 設定環境變數 自動設定 Token 教學

筆者最近在使用 Postman 測試的時候覺得幾乎每個 API 在呼叫時都要在 Header 帶入 JWT 很麻煩,因為每過一段時間就要更換一次,而且還是全部都要更換,於是就想到既然在開發時通常都會有開發時的設定檔,那 Postman 應該也會有吧?到 Postman 官方文件中翻了翻,發現確實可以透過設定環境變數的方式來讓 API 們共用同一個 Token,並且也可以設定在呼叫 API 後自動更新 Token。

新增和使用環境變數

只要在想要使用的地方輸入自訂名稱,並使用兩個大括號括起來即可,例如筆者的變數想要叫做 token,使用下面的方式輸入即可使用這個環境變數
    
{{token}}
    

因為筆者是第一次使用這個變數名稱,他就跳出視窗詢問是否要增加變數,直接點選「Add now variable」

輸入預設值和選擇變數作用的範圍後點選 Set variable 即可

那建立完的變數會儲存在哪裡呢?因為筆者剛剛選擇在 Collection 內(就是第一層資料夾),所以點選資料夾右邊的三個點 > Edit > Variables 頁籤,就會看到剛剛建立的變數了

除此之外筆者還會把基本的網址 (https://localhost:7183) 也設定為變數,這樣就可以很方便的切換了

呼叫 API 時自動更新變數

每次切換使用者或是 Token 過期時,就要呼叫 API 取得新的 Token,然後再手動寫入變數內,能不能自動更新呢?

可以在 API 的 Tests 頁籤中撰寫測試腳本,達到此功能,筆者撰寫的內容為從回應訊息中取得 Json 物件的 Token 內容,將之寫入 token 變數中,於是每次呼叫 API 後 Token 都會自動更新了!

附上上面的測試腳本
    
var jsonObject = pm.response.json();
var token = jsonObject["token"];
pm.collectionVariables.set("token", token);
    

另外筆者也把登入的 API 複製了幾份,每個 API 對應到不同的使用者並設定好登入資訊,例如一般的使用者和系統管理員,筆者呼叫一般的使用者登入的 API 時所有 API 都會使用到一般使用者的 Token ,呼叫系統管理員登入的 API 時所有 API 都會使用到系統管理員的 Token,非常的方便快速!

參考資料:
Postman.learning - Using variables
Postman.learning - Writing tests

留言