在 2017 年寫了一篇 「使用 Postman 取得 Token 打另一隻 API」,而那篇使用的方式是透過 Runner 的方式來達到取得 Token 再來打 API,其實還是有點麻煩,因為無法直接在單一一個 Collection 下 Send 就好。
而這邊來說一下如何直接在單一一個 Collection 下 Send 來取得 Token 並且呼叫 API 。
Pre-request Script
在 Postman 裡,每個 Collection 都有自己的 Pre-request Script ,而這個 Script 執行的時間點顧名思義就是在此 Collection Send 之前會先處理的 Script ,因此現在主要想要先取得 Token 後再做 Send ,所以就要把取得 Token 的動作放在 Pre-request Script 來處理了。
Token API
首先要先確認 Token API 的呼叫方式以及回傳格式。
此範列以 form-data 方式 呼叫 signin ,並傳送 user、password ,回傳 JSON 資料,且有 token 的參數。
建立取得會員資料 API
此 API 將取得會員資料,但必需要先有 Token 才能取得,會判斷 Token 是否有效並回傳該會員資料。
我們可以先手動將 Token Copy 到 Headers 的 Authorization ,並且送出確認 API 是可以正常
取得 Token Script
Postman 提供了 sendRequest 這個方法,讓我們可以在利用這個方法來先呼叫 Token API 來取得 Token 。
開始在 Pre-request Script 撰寫 Script 來自動取得 Token 並讓 Authorization 自動取讀。
|
|
sendRequest 的使用方式蠻簡單的,跟 jQuery 的 $.ajax 有點像。
- url:Token API 網址
- method:以 POST 的方式傳送
- body:傳送參數
- mode:以 formdata 的格式傳送
- formdata:傳送參數值設定
而回傳為 JSON 格式,所以在 response 後以 .json() 的方法解析 JSON ,並將回傳的 Token 儲存到 Postman 的環境變數裡。
Authorization 取讀環境變數
上面 Pre-request Script 裡已經將取得的 Token 以 signin_token 名稱儲存到環境變數裡,現在可以先設定讓 Authorization 取讀環境變數。
以雙大刮號包著變數名稱,這樣在 Send 出去時 Postman 會去讀取環境變數。
這邊故意將傳送的 Token 以 signin_token 變數回傳,來表示每次有取得到新的 Token 。
總結
先透過 Pre-request Script 呼叫可以取得 Token 的 API ,並且將 Token 存到環境變數,然後在需要傳送 Token 的地方去設定讀取環境變數,這樣就可以達到在單一一個 Collection 裡做到達要 Token 才能呼叫的 API 了。