👏

Postman 環境変数とFlowの関係について : ローカルとグローバル

2025/03/03に公開

https://qiita.com/KameMan/items/0f1d2a0038322df08489
前回の記事ではFlowsの複数ブロック間のデータの受け渡しに変数を用いる方法を簡単に説明しました。
この記事ではその変数の環境についてもう少し詳しく触れたいと思います。

まずは簡単なテスト環境作成

いつ通り神サイトであるhttps://requestcatcher.com/を用いて、POST用APIを作成します。名前はなんでも良いですがvariabletestにしましょう。
新規でコレクションを作成しPOSTリクエストを実行します。
image.png
image.png
image.png

ここでvalue1という名前の変数を作成します。前回の記事でもありましたがこれは現時点では未解決の変数です。
image.png
image.png
これを変数として認識させるためには、環境で新規に環境(変数の置き場所)を作成します。
image.png
image.png
以下のように設定し保存をクリックします。
image.png
コレクション側で環境を切り替えると変数を認識します。
image.png
image.png
image.png
では保存を行って次に、このコレクションをを用いたフローを作成します。
image.png
image.png
image.png
一度この状態でRunをクリックして実行するとrequestcatcher側の出力はまだ変数を認識していないことがわかります。つまりコレクションでは変数を認識していますが、フローでは変数を認識していません。
以下の通り明示的に変数に対してどの環境から値を読み込むかを指定する必要があります。
image.png
コレクションと異なり画面右上の環境設定だけでは不十分という点に注意してください。
image.png

ローカル環境とグローバル変数

たとえば複数人のチームで作業を行う場合、変数は統一しておきたい場合があります。その場合は環境にあらかじめ準備されているグローバルを用います。グローバルとして設定された変数はワークスペースのどこからでも認識されます。ただしローカルの環境と変数が重複する場合、ローカルの変数が優先されます。例えば意図的に同じ変数名で異なる値をグローバルに書き込み保存ボタンをおします。
image.png

この状態でフローを再度実行します。この際value1の変数参照先を新しい環境に設定しておくと先ほどと同じようにtestを読み込んでいることがわかります。
image.png
次に以下の通り環境情報を削除して再度実行するとグローバルの変数を読み込みます。
image.png
image.png
つまりローカル環境で明示的に宣言されているときはそちらを優先させ、宣言されていない場合はグローバルを見る、という仕様になっていることがわかります。変数のスコープはグローバルの方が広いですが、優先順位はローカルの環境が上位に来ています。

Postman クラウドとグローバル変数

つぎに前回の記事で行った通りこのフローをPublishしてWebhook経由で起動します。
image.png
image.png
そうすると変数は認識されなくなります。
一方グローバルではなく環境を指定すると変数を認識します。
image.png

まずこの挙動を理解するためにはPostmanクラウドとローカル環境について整理する必要があります。
image.png
Postmanを使っている場合、ローカルのアプリ、もしくはブラウザから操作することになります。これはローカル環境です。ブラウザから操作していたとしても環境は皆さん毎に固有化しており設定された変数はその範囲で閉じられます。クラウド流にいうとローカルインスタンスといったところでしょうか。
一方作成したフローをデプロイするとPostmanクラウド上での動作となります。Postmanクラウドには以下のような専用の機能も備わっていますのでこれらを使い分けていくことが必要になります。

  • モニター
  • ランナーのスケジュール実行
  • モックサーバーの稼働
    そしてグローバルの変数はPostmanクラウドにはデプロイされません。一方ローカルの変数はフローと一緒にデプロイされるためWebhook経由でのフローの起動や、スケジュール実行等Postmanクラウド固有の機能と連携させる場合は、ローカル環境の変数を用いる必要があります。ローカル環境はPostmanクラウドへ自動でデプロイされるため意識する必要はりません。

初期値と現在値

変数の作成画面に初期値現在値の2種類が存在しています。
image.png
Flowsで変数の値を書き換えた場合、現在値が変更になります。ただし前述の通りローカルインスタンスとPostmanクラウドでは異なる環境であり、Postmanクラウド上でフローを動作させた場合、変数の値は更新されません。 このためPostmanクラウド上で変数を使う場合定数として取り扱う必要があります。デプロイ時の初期値が定数の値として引き継がれます。

こちらについてはサンプル付きでもう一本ブログで説明したいと思っています。

より詳細な変数の解説はPostmanの川崎さんがブログを執筆していますので呼んでみて下さい。
https://qiita.com/yokawasa/items/05913df60aea07395903
image.png

Discussion