2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostmanAdvent Calendar 2024

Day 16

Postman APIを活用して環境変数のInitial Valueを動的に更新してみた

Last updated at Posted at 2024-12-16

はじめに

本記事は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ボタンをクリックすると表示されます
スクリーンショット 2024-12-16 13.16.13.png

作成したリクエストのPre-request Scriptタブで、現在のトークンの値を取得して変数に格納します。

Pre Request.
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の取得の方法について

  1. 対象のコレクションの3点ボタンから「Share」をクリックします
    スクリーンショット 2024-12-16 15.07.41.png

  2. 表示されるモーダルから「Share Via API」をクリックし、APIキーを生成して、表示されるURLをコピーします
    スクリーンショット 2024-12-16 15.09.32.png

環境変数のURLの取得方法について

  1. 以下のエンドポイントを使用します
    [GET] https://api.getpostman.com/environments
  2. environments/の後に環境変数IDとAPIキーを指定します
    スクリーンショット 2024-12-16 15.21.52.png
  3. APIキーはコレクションのURL取得時に生成したものを使用してください
  4. リクエストを送信して環境変数の情報が取得できればOKです

Newmanの実行

newman runの後に取得したコレクションのURLを指定し、環境変数を指定する場合は-eオプションで取得した環境変数のURLを指定して実行します。

newman run "https://..." -e "https://..."

Postman APIを使用して常に有効なトークンをInitial Valueに設定することができたため、どのタイミングでNewmanを実行しても認証エラーが発生しなくなりました。
スクリーンショット 2024-12-16 15.29.16.png

最後に

今回はPostman APIの一部のエンドポイントを使用して環境変数のInitial Valueを動的に更新する方法について紹介しました。

NewmanでもPostman APIを活用することによってOAuth2.0のトークンリフレッシュを実現できました。同じようにNewmanやOAuth2.0を活用されている方の参考になれば幸いです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?