HTTP クライアント変数
HTTP リクエストを作成する場合、変数を使用してその要素をパラメーター化できます。 変数は、リクエストのホスト、ポート、パスの値、クエリパラメーターまたは値、ヘッダー値、リクエストの本文内または外部ファイルで使用される任意の値を保持できます。
リクエスト内で変数を使用する
変数を
{{variable}}として二重波括弧で囲みます。
変数名には、文字、数字、アンダースコアシンボル _ 、ハイフンシンボル - 、またはドットシンボル . を含めることができます (変数名のドットについては 下記の注意を参照してください)。
変数型
HTTP クライアントにはいくつかの種類の変数があります。 スコープや優先順位によって異なります。変数の名前が競合する場合、リストの上位にある変数の値が使用されます。
環境変数は専用の環境ファイルで定義され、任意の .http ファイルで使用できます。 名前が競合する場合は、パブリック変数がプライベート変数よりも優先されます。
client.variables.environmentまたはrequest.environmentを使用してアクセスします。グローバル変数は 応答ハンドラーと事前リクエストスクリプトで定義されています。
client.variables.globalまたはclient.globalを使用してアクセスします。インプレース変数は .http ファイル内で定義され、同じファイル内でのみ使用できます。
client.variables.fileを使用してアクセスします。リクエストごとの変数はリクエストの前に定義され、後続の単一のリクエスト内でのみ使用できます。
client.variables.requestまたはrequest.variablesを使用してアクセスします。さらに、HTTP クライアントは 組み込み動的変数に動的に生成された値を提供します。 これらの変数には予約名が付いています。
異なる型の変数の操作を簡素化するため、HTTP クライアントは単一のアクセスポイント client.variables を提供します。 このアクセスポイントをリクエスト前処理スクリプトやレスポンスハンドラースクリプトで使用することで、すべての変数スコープにアクセスできます。 client.global、 request.environment、 request.variables などの既存のアクセスポイントも保持されます。
環境変数
環境変数を使うことで、プロジェクト内に一連の環境定義を保存できます。 たとえば、リクエストでホスト名を直接指定する代わりに、 {{host}} 変数を開発環境のローカルホスト名や本番環境の公開ホスト名など、異なる環境ごとに作成できます。 その後、現在の .http ファイルエディターの上部にある 実行 リストで環境を選択できます:
環境がありません: このオプションを選択すると、現在のファイルでリクエストを実行するときに環境は使用されません。 リクエストに変数が含まれていない場合は、これを選択します。
環境の名前(本番 や 開発 など)を指定すると、選択した環境が現在のファイルの全リクエストに使用され、
をクリックする際に毎回選択する必要がありません。 同じ環境で複数のリクエストを実行したい場合、毎回環境を選択し直さなくて済むので便利です。
<実行前に環境を選択>: このオプションを選択すると、
をクリックするたびに環境を選択する必要があります。 これは、環境を頻繁に切り替え、実行ごとに明示的に環境を選択して、必要な環境で要求を確実に実行する場合に便利です。

選択した環境は、リクエストの 構造を見る、 ブラウザーでのリクエストのオープン、リクエストの 実行 、および 実行 / デバッグ構成の作成の場合に、デフォルトの環境として使用されます。
環境変数を定義する
環境変数は 環境ファイルで定義されます。
リクエストのエディターパネルの上部にある 実行 リストで、環境を追加する場所を選択します。
環境を公開する場合は、 環境を Public ファイルに追加… を選択します。 これにより、環境が http-client.env.json ファイルに追加されます。 このファイルには、ホスト名、ポート、クエリパラメーターなどの一般的な変数を含めることができ、プロジェクトと一緒に配布することを目的としています。
環境をプライベートにする場合は、 環境を Private ファイルに追加… を選択します。 これにより、環境が http-client.private.env.json ファイルに追加されます。 このファイルには、パスワード、トークン、証明書、その他の機密情報が含まれる場合があります。 http-client.private.env.json ファイルで指定された変数の値は、パブリック環境ファイルの値をオーバーライドします。
作成したファイルに目的の変数を入力します。
次のサンプル http-client.env.json 環境ファイルは、 開発と 本番の 2 つの環境を定義しています。 追加の http-client.private.env.json ファイルは機密認証データを保持します。
{ "development": { "host": "localhost", "id-value": 12345, "username": "", "password": "", "my-var": "my-dev-value" }, "production": { "host": "example.com", "id-value": 6789, "username": "", "password": "", "my-var": "my-prod-value" } }{ "development": { "username": "dev-user", "password": "dev-password" }, "production": { "username": "user", "password": "password" } }HTTP リクエストの例は次のとおりです:
GET http://{{host}}/api/json/get?id={{id-value}} Authorization: Basic {{username}} {{password}} Content-Type: application/json { "key": "{{my-var}}" }リクエストを実行する前に、DataGrip ではリクエストのエディターパネル上部にある 実行 リストから実行環境を選択できます。
選択によって、結果のリクエストは次のいずれかになります:
GET http://localhost/api/json/get?id=12345 Authorization: Basic dev-user dev-password Content-Type: application/json { "key": "my-dev-value" }GET http://example.com/api/json/get?id=6789 Authorization: Basic user password Content-Type: application/json { "key": "my-prod-value" }
リクエストの実行時に変数が解決されていない場合は、DataGrip が通知を表示し、すばやく新しい環境の作成、更新、または別の実行環境の選択ができるようにします。

複数の環境ファイルを管理する
プロジェクトには、HTTP リクエストファイルと対応する環境ファイルを含む複数のディレクトリが存在する場合があります。 この場合、リクエストの環境を選択する際に次のセクションを使用できます。
ファイルに対して は、現在のディレクトリと親ディレクトリに保存されている環境を示します。
このリストから環境を選択すると、HTTP クライアントは現在のディレクトリに保存されているファイル (パブリックおよびプライベート) 内でその環境を見つけようとします。 この環境にファイルがない場合は、親ディレクトリをチェックします。
プロジェクト全体から は、プロジェクトの他のすべての場所 (現在のディレクトリと親ディレクトリを除く) に保存されている環境を示します。 これらのディレクトリのファイルに、 ファイルに対して セクションの環境と同じ名前の環境が含まれている場合、その環境はリストに表示されません。
プロジェクト内のどこにでも表示されるようにしたい場合は、環境に一意の名前を付けることができます。

これを例で説明してみましょう。 次のようなプロジェクト構造があるとします。
service1 ディレクトリに保存されている .http ファイルは、 開発 環境を選択すると、 key 変数の myKey1 値を使用します。 service2 ディレクトリに保存された .http ファイルは、 key 変数の myKey2 値を使用します。
プライベートファイルに 共有セッションには、ホスト 変数が含まれている場合、プライベートファイルはパブリックファイルよりも優先されるため、 .http ファイルはその値を使用します。 それ以外の場合は、パブリックファイルの値が使用されます。
インプレース変数
インプレース変数のスコープは、それが宣言された .http ファイルです。 同じファイル内の複数のリクエストで同じ変数を参照する場合は、インプレース変数を使用します。
インプレース変数を作成するには、HTTP メソッドセクションの上に「@ 」と入力し、その後に変数の名前を入力します。 例:
リクエストごとの変数
request.variables.set(variableName, variableValue) メソッドを使用して、HTTP 要求で使用される変数の値を設定できます。 HTTP リクエストの上に、 {% ... %} でラップされたプレリクエストスクリプトを記述します。 例:
プレリクエストスクリプトで定義された変数は、スクリプトに続く単一のリクエスト内でのみ使用できます。
変数の初期化 コンテキストアクション (Alt+Enter) を使用すると、インプレース変数または環境変数をすばやく追加したり、リクエスト前ハンドラースクリプトで変数を初期化したりできます。

プレリクエストスクリプトでは、 HTTP クライアント暗号 API を使用して、SHA-1、SHA-256、SHA-512、MD5 などの暗号化ハッシュ関数に基づいて HTTP 署名を生成し、変数としてリクエストに渡すこともできます。 例:
動的変数
動的変数は、リクエストを実行するたびに値を生成します。 それらの名前は $ で始まります:
$uuidまたは$random.uuid: 普遍的に一意の識別子を生成します (UUID-v4)$timestamp: 現在の UNIX タイムスタンプを生成します$isoTimestamp: UTC タイムゾーンの ISO-8601 形式で現在のタイムスタンプを生成します。$randomInt: 0 〜 1000 のランダムな整数を生成します。$random.integer(from, to):from(両端を含む) とto(両端を含まない) の間のランダムな整数を生成します (たとえば、random.integer(100, 500))。 パラメーターを指定しない場合は、0 ~ 1000 のランダムな整数が生成されます。$random.float(from, to):from(両端を含む) とto(両端を含まない) の間のランダムな浮動小数点数を生成します (たとえば、random.float(10.5, 20.3))。 パラメーターを指定しない場合は、0 ~ 1000 のランダムな浮動小数点数が生成されます。$random.alphabetic(length): 長さlength(0 より大きい必要があります) の大文字と小文字のシーケンスを生成します。$random.alphanumeric(length): 長さlength(0 より大きい必要があります) の大文字と小文字、数字、アンダースコアのシーケンスを生成します。$random.hexadecimal(length): 長さlength(0 より大きい必要があります) のランダムな 16 進文字列を生成します。$random.email: ランダムなメールアドレスを生成します。$exampleServer:HTTP Client のみでアクセスできる DataGrip 組み込みサーバーに置き換えられます。 この変数は、GraphQL および WebSocket の 例で使用されます。
URL パラメーターや本文などのリクエスト部分で動的変数を利用します:
事前リクエストハンドラースクリプトと応答ハンドラースクリプトでは、通常の JavaScript 変数と同様に、波括弧なしで使用します。 例:
より動的な変数
住所、色、会社名など、他の型のランダムデータを生成できます。 HTTP クライアントは、 Java 偽者(英語)ライブラリの次のクラス (およびパラメーターを必要としないメソッド) をサポートしています。
$random.address$random.beer$random.bool$random.business$random.ChuckNorris.fact$random.code$random.color$random.commerce$random.company$random.crypto$random.educator$random.finance$random.hacker$random.idNumber$random.internet$random.lorem$random.name$random.number$random.phoneNumber$random.shakespeare$random.superhero$random.team$random.university
動的変数の局所化
デフォルトでは、HTTP クライアントは Java 偽者(英語)ライブラリのデフォルトロケール(英語、米国)を使用してランダムデータを生成します。 例: 次のリクエスト
デフォルトのロケールに従ってフォーマットされたランダムなアドレスを生成します: Apt. 123 Main Street, Springfield, IL 12345
地域固有のデータを生成するには、 locale 修飾子を使用して サポートされているロケールのいずれか(英語)を明示的に指定できます。
乱数シード(英語)を指定することで、ローカライズされた乱数値を決定論的にすることができます。 同じシードとロケールを使用すると、実行ごとに同じ値が生成されます。
次の例では、 12 は乱数発生器を初期化するために使用される乱数シードです。
システム環境変数
HTTP クライアントでは、オペレーティングシステムの環境変数を使用できます。
それらにアクセスするには、 {{$env.ENV_VAR}} 構文を使用してください。ここで ENV_VAR は環境変数の名前です。 事前リクエストハンドラースクリプトと応答ハンドラースクリプトでは、通常の JavaScript 変数と同様に、波括弧なしで使用します。 例:
変数名の入力を開始すると、使用可能な変数候補が表示されます:

変数内のコレクションを反復処理する
環境変数および 事前リクエストスクリプトで初期化される変数は、ID やユーザー名のリストなどの要素コレクションを表すことができます。 このような変数が HTTP リクエストで使用されると、HTTP クライアントはこのリストの各要素に対して個別のリクエストを送信します。 DataGrip は、このような変数に対する JSONPath 式もサポートしており、特定の要素やサブセットにアクセスして各要素にリクエストを送信できます。
たとえば、ID によって書籍に関する情報を返すサーバーがある場合、JSON 配列 [1,2,3,4,5] を変数 id に割り当て、それを本文または URL 部分で使用できます。
HTTP Client は、コレクションから各リクエストごとに変数を次の項目へと置き換え、5 つ連続したリクエストを送信します。
同様に、リクエスト本文でコレクションを使用することもできます。 次の例では、HTTP クライアントは本文に異なる値を持つ 3 つのリクエストを送信します: name: Alice、 name: Bob、 name: Charlie
JSONPath を使用すると、配列内の JSON オブジェクトの特定のパラメーターにアクセスすることもできます。 例: 次のクエリでは、HTTP クライアントは、 users という変数内のすべてのオブジェクトの各 名前 値に対するリクエストを送信します。
変数で JSONPath を使いやすくするため、DataGrip は既知パラメーターの補完、検証、ハイライトなどの JSONPath コーディング支援を提供します。 JSONPath 言語は、 動的変数を除くすべての HTTP クライアント変数(二重の波括弧で囲まれる)に 挿入されます。

事前リクエストスクリプトおよび応答ハンドラースクリプトのループ内の現在のインデックスを取得するには、 request.iteration() メソッドを使用します。 例: 0 は、配列の最初の項目が処理され、最初のリクエストが送信されていることを示します。
request.iteration() の例
事前リクエストスクリプトおよび応答ハンドラースクリプトのループ内でインデックスによって値を取得するには、 request.templateValue(Integer) メソッドを使用します。