環境変数/グローバル変数/ローカル変数
変数は、複数の場合で繰り返し利用する情報を保存するものです。異なるAPI(Requestパラメータ、Scriptなど)は同じ変数を参照できますので、当該変数の値を更新すると、全ての参照先の値は更新されます。変数を利用すると、生産性を向上することができます。
クイックスタート
- 環境管理の設定を開き、 (アプリ画面の右上にある「三本線」をクリック) グローバル変数を選択します。
- my_variableという名前の変数を追加し、その値をhelloに設定し、保存をクリックします。
- APIに移動して、「実行」タブでパラメータ値のところに{{my_variable}}を入力します。
- 「送信」ボタンをクリックし、Requestを送信します。ここでシステムは実行中に{{my_variable}}を自動的に置き換えてRequestを送信します。
- システムには、BASE_URLという内蔵の特別環境変数があり、その値は現在の環境のBase URLです。{{BASE_URL}}からそれにアクセスできます。
- BASE_URLと同じな名前の環境変数を手動で追加すると、システムに内蔵されているBASE_URLの値が上書きされます。
- pm.environment.get('BASE_URL')のScriptからBase URLにアクセスできます。
- ScriptはBase URLを変更できません。pm.environment.set('BASE_URL','xxx')というScript は、BASE_URLという名前の真実の環境変数を生成しますが、Base URL を変更しません。
ローカル値とリモート値の相違点
- すべての変数は、実行時にリモート値ではなくローカル値を読み書きします。
- ローカル値は、ローカルにのみ保存されてクラウドやチームメンバー間で同期されないため、Token、アカウント、パスワードなどの機密データを保存することが多いのです。
- リモート値はクラウドに同期され、主にチームメンバー間でデータ値を共有するために使用されます。
ローカル値はローカルのディスクにのみ保存されるため、クリーニングソフトウェアを使用してApidogファイルキャッシュをクリーンアップすれば、ローカル値も削除される可能性がありますので、気をつけてください。
変数のタイプ
- 環境変数:環境変数は、環境の変更に伴って変更した変数です。環境変数は、環境管理セクションで管理されます。ここで環境変数/グローバル変数/ローカル変数の詳細を見る。
- グローバル変数:グローバル変数は環境変数に似ています。唯一の違いは、環境が変化してもグローバル変数が変化しないことです。
- ローカル変数:ローカル変数は、単一のAPI 実行、または、テストケースデバッグ、またはテストのコレクションデバッグ中にのみ有効な使い捨て変数です。
変数の使用
- すべての変数には、{{token}}のような二重波括弧で囲まれるものでアクセスできます。
- 変数は、複数の場所で使用できます。使用可能な場所例:APIの実行タブ、APIユースケース、Requestなど。
- 環境内での追加変数も変数を使用することができます。
RequestのBodyのフォーマットはJsonとRawの場合、変数とダイナミック変数を使用できます。 使用例:
{
"field1": "{{stringVariable}}",
"field2": {{intVariable}},
"field3": {{arrayVariable}},
"field4": {{objectVariable}},
"field5": {{$timestamp}}
}
ご注意:
- JsonフォーマットのStringタイプの変数を使用する場合のみ、二重波括弧を追加する必要があります。上記の例に示すように、他のすべてのタイプに二重波括弧を追加しないでください。
- 二重波括弧のない変数を使用する場合は、書式設定機能を使用しないでください。正しくないJSONフォーマットの提示があるとしても無視しても良いのです。
変数の値がオブジェクト、または配列型になっている場合、{{variableName.attributeName}}または{{variableName[0].attributeName}}を通じて変数内の属性値を読み取ることができます。例えば:
- user 変数のオブジェクト値は次のフォマットになります:
{
"id": 1,
"name": "jack"
}
- APIパラメータでは、userオブジェクト中のnameプロパティを{{user.name}}として参照できます。
- カスタムScriptでは、userオブジェクトのnameプロパティを pm.variables.get("user.name") として参照できます。
- user 変数の配列型の値は次のようになります:
[
{
id: 1,
name: "jack",
},
];
- APIパラメータで{{user[0].name}}を使用して、user 配列中の最初要素のnameプロパティを参照できます。
- カスタムScriptで、pm.variables.get("user[0].name") を使用して、user 配列中の最初要素のnameプロパティを参照できます。
上記のように、変数(オブジェクトまたは配列型)内のプロパティの値を{{user.name}}として読み取ります。JSON Pathの構文仕様に従いますが、JSON Pathの\$記号を変数名に置き換える必要があります。
JSON Pathの詳細はこちらをご覧ください。
変数の優先順位
二重波括弧は、すべての変数を参照できます。同じ名前の異なるタイプの変数が存在する場合、システムは優先順位に基づいて、これらの変数を次々に使用します。
変数の優先順位:ローカル変数 > デバッグ変数 > 環境変数 > グローバル変数
Scriptでの変数の使用
環境変数
//Set up Environment Variables
pm.environment.set("variable_key", "variable_value");
//Access Environment Variables
var variable_key = pm.environment.get("variable_key");
//Unset Environment Variables
pm.environment.unset("variable_key");
オブジェクトや配列(String(文字列)以外の型)を環境変数に書き込む
環境変数にはString(文字列)型が必要です。オブジェクトや配列型で書き込む場合は、まずJSON.stringifyを使用してそれを文字列に変換する必要があります。
var array = [1, 2, 3, 4];
pm.environment.set("array", JSON.stringify(array));
var obj = { a: [1, 2, 3, 4], b: { c: "val" } };
pm.environment.set("obj", JSON.stringify(obj));
値を読み取るときに、JSON.parseを使用して元に戻す必要があります。
try {
var array = JSON.parse(pm.environment.get("array"));
var obj = JSON.parse(pm.environment.get("obj"));
} catch (e) {
// Exception handling
}
グローバル変数
// Set up global variables
pm.globals.set("variable_key", "variable_value");
// Access Global Variables
var variable_key = pm.globals.get("variable_key");
// unset Global Variables
pm.globals.unset("variable_key");
ローカル変数
// Set up Temporary Variables
pm.variables.set("variable_key", "variable_value");
// Access Temporary Variables
var variable_key = pm.variables.get("variable_key");
// unset Temporary Variables
pm.variables.unset("variable_key");