もっと！Postmanを使いこなす


[Postmanを使ってHTTPに送ったデータを確認する](https://qiita.com/Molly95554907/items/e367e83129ea1173c317)の続き。

Postanのさらに便利な機能
・環境設定
・認証トークンの設定

について。

##Postmanでテストする環境を設定する
![https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_595580_a5fca287-a852-176f-3618-ae0b381a9f71.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/4ae6bf7d-67cc-a95d-f924-64a0e4996ebc.png)

PostmanでAPIをテストする際には、リクエストを送りたいURLをバーに入力している。

しかし、ローカル環境でのAPIのURLと、HerokuなどにデプロイしたあとのAPIのURLは異なる。

APIが動く環境が変わっても、テストファイルを新しく作り直さずにテストしたい！

>※）上記の場合
「localhost:3000/users/」
をテストしているが、これはHerokuにデプロイしたあとだと
「 https://〜.herokuapp.com/users/」
に変わるはず

<h5>環境設定</h5>
<h6>・歯車マークのところから環境を設定</h6>
<img width="338" alt="68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3539353538302f65316239343735662d373736392d393537642d313963632d6335323833386233373234662e706e67.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/d32324c1-3520-f274-6ebe-77a8d057091f.png">

<h6>・Merge Environmentが開くので、そこへ環境をAdd</h6>

<img width="835" alt="スクリーンショット 2020-07-30 20.25.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/4312bab2-ab19-e50a-6ed1-08f09c7bc357.png">

・Environment Name: ローカル環境なら、「アプリ名（dev）」とつけておけばわかりやすい
（※本番環境なら「アプリ名（prod）」）

・VARIABLE:設定した環境を呼び出すキーワード
例）urlを設定したいなら「url」

・INIIAL VALUE:設定する環境の値
例）「アプリ名（dev）」の環境で用いる「url」が「localhost:3000」ならそれを入力
↓
Addする

<h6>・VALUABLEをテストに設定</h6>
<img width="863" alt="スクリーンショット 2020-07-30 20.31.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/0d5f9789-8706-19ae-86a3-52e627c6c9b4.png">

・ドロップダウンリストより、作成した環境を選択
バーに入力している、リクエストを送りたいURLを変更。
↓
「localhost:3000」の箇所を「{{url}}」に置き換える。

「url」というVARIABLEの中に「localhost:3000」という値を保存しているため、「{{url}}/users」は「localhost:3000/users」と同じように認識される


##HerokuにデプロイしたアプリをPostmanからテストする
Heroku用の環境を用意する。

・歯車マークのところから環境を設定
<img width="338" alt="スクリーンショット 2020-07-19 11.06.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/e1b9475f-7769-957d-19cc-c52838b3724f.png">

・「VARIABLE」に「url」、「CURRENT VALUE」にHerokuにデプロイしたアプリのURLから、最後の「/」を抜いたものを設定し「ADD」

<img width="764" alt="スクリーンショット 2020-07-19 11.05.25.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/ddc3f9d5-a137-42b9-a85c-d0834d6decd2.png">

・Postmanの環境を、作成した環境名にセット

<img width="397" alt="スクリーンショット 2020-07-19 11.02.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/531024bc-3bdd-60e6-1565-787b90536f7c.png">

↓
PostmanからHerokuアプリにリクエストを送ることができるようになった！

##認証トークンを設定する

<h5>・テストしたいアプリにトークンを用いた認証が行われている場合</h5>
<img width="876" alt="スクリーンショット 2020-07-30 20.44.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/09bbf216-ef1a-ada2-0398-0399f08a9da7.png">

「Authorization」タブより、PostmanがHTTPにリクエストを送る時のヘッダーに認証トークンを設定する。

・TYPEを「Bearer Token」に設定
・Token欄に認証Tokenを入力

※ただし、この場合、一つのTokenしか設定できない

##環境としてTokenを設定する
<h6>・アプリのテストを行う全てのリクエストからTokenを読み出せるようにする</h6>

<img width="369" alt="スクリーンショット 2020-07-30 21.46.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/3ac7834f-cf68-b0d6-051a-9d727767c2f9.png">

・Edit Folderより設定

<img width="859" alt="スクリーンショット 2020-07-30 21.48.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/34a5ffa7-3bbb-df4e-87f0-f3d16453099f.png">

（※画像のTYPEは無視）
・TYPEを「Inherit auth from parent」に選択
・Token欄にトークンを入力
↓
設定

<h6>・リクエスト側からトークンを読み出す</h6>
<img width="819" alt="スクリーンショット 2020-07-30 21.56.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/c5473b76-6939-169f-ebf0-dfefc7962831.png">

AuthorizationのTYPEに「Inherit from parent」を設定

##テストコードからTokenの値を自動設定する

「トークンが作られるイベントをPostmanで実行」
→「作られたJSONトークンをPostmanが取得」
→「取得したトークンを、全てのリクエストから呼び出せるトークンとして設定」

の流れを自動的に行うよう設定する。

<h6>・「Pre-request Script」「Tests」の項目について</h6>
.「Pre-request Script」:Postmanからリクエストを送る前に実行するコード
・「Tests」:Postmanからリクエストを送った後にリクエストするコード

↓
今回は、リクエスト後に、レスポンシとして送られてくるtokenを取得、設定する
↓
「Tests」にコードを書く

<h6>・「Tests」の設定</h6>

<img width="875" alt="スクリーンショット 2020-07-30 22.04.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/62634bf0-93d0-50e9-12df-2f2f1f951d72.png">

```javascript
if (pm.response.code === 200){  //pmはpostmanの値を取得する変数
    pm.environment.set('authToken', pm.response.json().token)
}　//'authToken'変数にJSONトークンを設定

```

<h6>・'authToken'変数の設定</h6>

<img width="369" alt="スクリーンショット 2020-07-30 21.46.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/710efbd3-b3e9-3b04-bd9d-97f0c76049cb.png">

<img width="842" alt="スクリーンショット 2020-07-30 22.14.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/3bab9bec-e057-5a7f-f0c6-47b505da47d2.png">

「Edit Folder」より設定

・TYPEを「Bearer Token」に選択
・Token欄に「{{authToken}}」と入力
→authToken変数の設定

authToken変数を、全てのリクエストから呼び出せるトークンとして設定

<h6>・リクエスト側からトークンを読み出す</h6>
<img width="834" alt="スクリーンショット 2020-07-30 22.17.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/595580/3f6d80c8-0c46-6814-0d41-bfc46677e1fc.png">

・AuthorizationのTYPEに「Bearer Token」を設定
・Tokenに「{{authToken}}」を設定