Postmanを使ってHTTPに送ったデータを確認するの続き。
Postanのさらに便利な機能
・環境設定
・認証トークンの設定
について。
PostmanでAPIをテストする際には、リクエストを送りたいURLをバーに入力している。
しかし、ローカル環境でのAPIのURLと、HerokuなどにデプロイしたあとのAPIのURLは異なる。
APIが動く環境が変わっても、テストファイルを新しく作り直さずにテストしたい!
※)上記の場合
「localhost:3000/users/」
をテストしているが、これはHerokuにデプロイしたあとだと
「 https://〜.herokuapp.com/users/」
に変わるはず
環境設定
・歯車マークのところから環境を設定
・Merge Environmentが開くので、そこへ環境をAdd
・Environment Name: ローカル環境なら、「アプリ名(dev)」とつけておけばわかりやすい
(※本番環境なら「アプリ名(prod)」)
・VARIABLE:設定した環境を呼び出すキーワード
例)urlを設定したいなら「url」
・INIIAL VALUE:設定する環境の値
例)「アプリ名(dev)」の環境で用いる「url」が「localhost:3000」ならそれを入力
↓
Addする
・VALUABLEをテストに設定
・ドロップダウンリストより、作成した環境を選択
バーに入力している、リクエストを送りたいURLを変更。
↓
「localhost:3000」の箇所を「{{url}}」に置き換える。
「url」というVARIABLEの中に「localhost:3000」という値を保存しているため、「{{url}}/users」は「localhost:3000/users」と同じように認識される
##HerokuにデプロイしたアプリをPostmanからテストする
Heroku用の環境を用意する。
・「VARIABLE」に「url」、「CURRENT VALUE」にHerokuにデプロイしたアプリのURLから、最後の「/」を抜いたものを設定し「ADD」
・Postmanの環境を、作成した環境名にセット
↓
PostmanからHerokuアプリにリクエストを送ることができるようになった!
##認証トークンを設定する
・テストしたいアプリにトークンを用いた認証が行われている場合
「Authorization」タブより、PostmanがHTTPにリクエストを送る時のヘッダーに認証トークンを設定する。
・TYPEを「Bearer Token」に設定
・Token欄に認証Tokenを入力
※ただし、この場合、一つのTokenしか設定できない
##環境としてTokenを設定する
・アプリのテストを行う全てのリクエストからTokenを読み出せるようにする
・Edit Folderより設定
(※画像のTYPEは無視)
・TYPEを「Inherit auth from parent」に選択
・Token欄にトークンを入力
↓
設定
・リクエスト側からトークンを読み出す
AuthorizationのTYPEに「Inherit from parent」を設定
##テストコードからTokenの値を自動設定する
「トークンが作られるイベントをPostmanで実行」
→「作られたJSONトークンをPostmanが取得」
→「取得したトークンを、全てのリクエストから呼び出せるトークンとして設定」
の流れを自動的に行うよう設定する。
・「Pre-request Script」「Tests」の項目について
.「Pre-request Script」:Postmanからリクエストを送る前に実行するコード ・「Tests」:Postmanからリクエストを送った後にリクエストするコード↓
今回は、リクエスト後に、レスポンシとして送られてくるtokenを取得、設定する
↓
「Tests」にコードを書く
・「Tests」の設定
if (pm.response.code === 200){ //pmはpostmanの値を取得する変数
pm.environment.set('authToken', pm.response.json().token)
} //'authToken'変数にJSONトークンを設定
・'authToken'変数の設定
「Edit Folder」より設定
・TYPEを「Bearer Token」に選択
・Token欄に「{{authToken}}」と入力
→authToken変数の設定
authToken変数を、全てのリクエストから呼び出せるトークンとして設定
・リクエスト側からトークンを読み出す
・AuthorizationのTYPEに「Bearer Token」を設定
・Tokenに「{{authToken}}」を設定