はじめに
本記事はPostman Advent Calendar 2024の16日目の記事です。
今回は、Postman APIを活用して環境変数のInitial Valueを動的に更新する方法について紹介します。
背景
PostmanのCLIツールであるNewmanでは、環境変数を指定して実行する際に、環境変数のCurrent ValueではなくInitial Valueが参照されます。
認証にOAuth2.0を使用している場合、Current Valueに有効なアクセストークンを動的に更新し続けることで、常に認証が成功するように設定することができます。
しかし、CLIツールであるNewmanを利用する場合、環境変数のInitial Valueを参照して実行するため、Current Valueのトークンがリフレッシュできても、Initial Valueが参照されるため認証エラーになります。
Postman APIを活用することで、動的に環境変数のInitial Valueを更新し、認証エラーが発生しないようにしたいと思います。
Postman APIを活用することで動的に環境変数のInitial Valueを更新し、認証エラーが発生しないようにしたいと思います。
前提
Postmanには、OAuth2.0のアクセストークンを自動でリフレッシュする便利な機能があります。
しかし、Newmanではこの機能がサポートされていないため、Postmanのリクエストに直接アクセストークンをリフレッシュする処理を追加する必要があります。
本記事はアクセストークンを自動更新する処理を実装した後にNewmanからの実行でもアクセストークンを自動で更新する方法の記事になります。
Postman APIを活用して環境変数のInitial Valueを更新する
Postmanの公式サイトには、環境変数のInitial Valueを動的に設定する方法が紹介されています。
以下のエンドポイントを使用してリクエストを作成します。
[PUT] https://api.getpostman.com/environments/{{environmentId}}
環境変数IDは、環境変数画面の右にあるInformationボタンをクリックすると表示されます
作成したリクエストのPre-request Scriptタブで、現在のトークンの値を取得して変数に格納します。
const access_token = pm.environment.get("access_token");
const refresh_token = pm.environment.get("refresh_token");
次に、リクエストボディを書いていきます。
nameには使用する環境変数の名前を入れます。
keyには更新したい値のキーを入れます。
valueにはそのキーのInitial Valueに入れたい値を入れます。
Pre-request Scriptに追加した処理によって、リクエストを送信する前にトークンの変数に有効なトークンの値がセットされます。
以下のようにリクエストボディを書いて、有効なトークンの値をInitial Valueに代入します。
{
"environment": {
"name": "使用する環境変数の名前",
"values": [
{
"key": "環境変数の中にある変数名",
"value": "更新したい値",
"enabled": true
}, {
"key": "access_token", //Current valueの値をInitial Valueに代入する
"value": "{{access_token}}", //Current valueの値
"enabled": true
}, {
"key": "refresh_token",
"value": "{{refresh_token}}",
"enabled": true
}
]
}
}
Newmanを実行してみよう
環境変数のInitial Valueを更新する仕組みが完成したので、Newmanを実行してみます。
使用するコレクション
-
リクエストA
- 簡単なテストが書かれたリクエスト
- Pre-request Scriptタブにアクセストークンの自動更新の処理を実装
-
リクエストB
- Postman APIで環境変数のInitial Valueを更新するリクエスト
今回はNewmanを実行するときに、ファイルではなくURLを指定して実行します。
コレクションのURLの取得の方法について
環境変数のURLの取得方法について
- 以下のエンドポイントを使用します
[GET] https://api.getpostman.com/environments
- environments/の後に環境変数IDとAPIキーを指定します
- APIキーはコレクションのURL取得時に生成したものを使用してください
- リクエストを送信して環境変数の情報が取得できればOKです
Newmanの実行
newman runの後に取得したコレクションのURLを指定し、環境変数を指定する場合は-eオプションで取得した環境変数のURLを指定して実行します。
newman run "https://..." -e "https://..."
Postman APIを使用して常に有効なトークンをInitial Valueに設定することができたため、どのタイミングでNewmanを実行しても認証エラーが発生しなくなりました。
最後に
今回はPostman APIの一部のエンドポイントを使用して環境変数のInitial Valueを動的に更新する方法について紹介しました。
NewmanでもPostman APIを活用することによってOAuth2.0のトークンリフレッシュを実現できました。同じようにNewmanやOAuth2.0を活用されている方の参考になれば幸いです。