IntelliJ IDEA 2026.1 Help

HTTP クライアント変数

HTTP リクエストを作成する場合、変数を使用してその要素をパラメーター化できます。 変数は、リクエストのホスト、ポート、パスの値、クエリパラメーターまたは値、ヘッダー値、リクエストの本文内または外部ファイルで使用される任意の値を保持できます。

リクエスト内で変数を使用する

  • 変数を {{variable}} として二重波括弧で囲みます。

変数名には、文字、数字、アンダースコア記号 _ 、ハイフン記号 - 、またはドット記号 を含めることができます (変数名のドットについては 下記の注意を参照してください)。

変数型

HTTP Client には、いくつかの型の変数があります。 スコープや優先順位によって異なります。変数の名前が競合する場合、リストの上位にある変数の値が使用されます。

  • 環境変数 は専用の環境ファイルで定義され、任意の .http ファイルで利用できます。 名前が競合する場合、パブリック変数がプライベート変数よりも優先されます。

    client.variables.environment または request.environment を使用してアクセスします。

  • グローバル変数 は、 レスポンス ハンドラーとプリリクエスト スクリプトで定義されます。

    client.variables.global または client.global を使用してアクセスします。

  • インプレース変数 .http ファイル内で定義され、同じファイル内でのみ使用できます。

    client.variables.file を使用してアクセスします。

  • リクエストごとの変数 は、リクエストの前に定義され、その後に続く 1 件のリクエスト内でのみ利用できます。

    client.variables.request または request.variables を使用してアクセスします。

  • さらに、HTTP クライアントは動的に生成される値を持つ 組み込み動的変数を提供します。 このような変数には予約名があります。

さまざまな型の変数を扱う作業を単純化するために、HTTP クライアントは単一のアクセス ポイント client.variables を提供します。 プリリクエスト スクリプトおよびレスポンス ハンドラー スクリプトで使用して、すべての変数スコープにアクセスできます。 client.globalrequest.environment 、および request.variables などの既存のアクセス ポイントも保持されます。

環境変数

環境変数を使うと、プロジェクト内に一連の環境設定を保管することができます。 例えば、リクエストにホスト名を直接指定する代わりに、異なる環境ごとに {{host}} 変数を作成できます。開発環境ではローカルのホスト名、本番環境では公開用のホスト名を指定します。 その後、現在の .http ファイル エディター上部の 実行 リストから環境を選択できるようになります。

  • 環境がありません: このオプションを選択すると、現在のファイルでリクエストを実行するときに環境は使用されません。 リクエストに変数が含まれていない場合は、これを選択します。

  • 環境の名前(本番開発 など)を指定すると、選択した環境が現在のファイルの全リクエストに使用され、 実行ボタン をクリックする際に毎回選択する必要がありません。 同じ環境で複数のリクエストを実行したい場合、毎回選択する手間が省けるため便利です。

  • <実行前に環境を選択する>: このオプションを選択すると、 実行ボタン をクリックするたびに環境を選択する必要があります。 これは、環境を頻繁に切り替え、実行ごとに明示的に環境を選択して、必要な環境で要求を確実に実行する場合に便利です。

実行リクエスト: 環境の選択

選択した環境は、リクエストの 構造を見るブラウザーでのリクエストのオープン、リクエスト実行 、および 実行 / デバッグ構成の作成の場合に、デフォルトの環境として使用されます。

環境変数を定義する

環境変数は 環境ファイルで定義されます。

  1. リクエストのエディターパネルの上部にある 実行 リストで、環境を追加する場所を選択します。

    • 環境を公開する場合は、 環境を Public ファイルに追加… を選択します。 これにより、環境が http-client.env.json ファイルに追加されます。 このファイルには、ホスト名、ポート、クエリパラメーターなどの一般的な変数を含めることができ、プロジェクトと一緒に配布することを目的としています。

    • 環境をプライベートにする場合は、 環境を Private ファイルに追加… を選択します。 これにより、環境が http-client.private.env.json ファイルに追加されます。 このファイルには、パスワード、トークン、証明書、その他の機密情報が含まれる場合があります。 http-client.private.env.json ファイルで指定された変数の値は、パブリック環境ファイルの値をオーバーライドします。

  2. 作成したファイルに目的の変数を入力します。

    次のサンプル 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}}" }

    IntelliJ IDEA では、リクエストを実行する前に、リクエストのエディターパネルの上部にある 実行 リストを使用して実行環境を選択できます。

    選択に応じて、結果の要求は次のいずれかになります。

    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" }

リクエストの実行時に変数が解決されない場合、IntelliJ IDEA は通知を表示し、別の実行環境をすばやく作成、更新、選択できるようにします。

HTTP リクエスト通知の未解決の変数

複数の環境ファイルを管理する

プロジェクトには、HTTP リクエストファイルと対応する環境ファイルを含む複数のディレクトリが存在する場合があります。 この場合、リクエストの環境を選択する際に次のセクションを使用できます。

  • ファイル内 は、現在のディレクトリと親ディレクトリに保存されている環境を示します。

    このリストから環境を選択すると、HTTP クライアントは現在のディレクトリに保存されているファイル (パブリックおよびプライベート) 内でその環境を見つけようとします。 この環境にファイルがない場合は、親ディレクトリをチェックします。

  • プロジェクト全体 は、プロジェクトの他のすべての場所 (現在のディレクトリと親ディレクトリを除く) に保存されている環境を示します。 これらのディレクトリのファイルに、 ファイル内 セクションの環境と同じ名前の環境が含まれている場合、その環境はリストに表示されません。

    プロジェクト内のどこにでも表示されるようにしたい場合は、環境に一意の名前を付けることができます。

HTTP クライアントの環境

これを例で説明してみましょう。 次のようなプロジェクト構造があるとします。

root/http-client.env.json # public file with 'dev' environment and 'host' variable root/service1/http-client.private.env.json # private file with 'dev' environment and "key": "myKey1" variable root/service2/http-client.private.env.json # private file with 'dev' environment and "key": "myKey2" variable

service1 ディレクトリに保存されている .http ファイルは、 dev 環境を選択すると、 key 変数の myKey1 値を使用します。 service2 ディレクトリに保存された .http ファイルは、 key 変数の myKey2 値を使用します。

プライベートファイルに host 変数が含まれている場合、プライベートファイルはパブリックファイルよりも優先されるため、 .http ファイルはその値を使用します。 それ以外の場合は、パブリックファイルの値が使用されます。

インプレース変数

インプレース変数のスコープは、それが宣言された .http ファイルです。 同じファイル内の複数のリクエストで同じ変数を参照する場合は、インプレース変数を使用します。

インプレース変数を作成するには、HTTP メソッドセクションの上に「@ 」と入力し、その後に変数の名前を入力します。 例:

@myhost = example.org GET {{myhost}}/users ### GET {{myhost}}/stats

リクエストごとの変数

request.variables.set(variableName, variableValue) メソッドを使用して、HTTP 要求で使用される変数の値を設定できます。 HTTP リクエストの上に、 {% ... %} でラップされたプレリクエストスクリプトを記述します。 例:

< {% request.variables.set("firstname", "John") %} GET http://example.org/{{firstname}}

プレリクエストスクリプトで定義された変数は、スクリプトに続く単一のリクエスト内でのみ使用できます。

変数の初期化 コンテキストアクション (Alt+Enter) を使用すると、インプレース変数または環境変数をすばやく追加したり、リクエスト前ハンドラースクリプトで変数を初期化したりできます。

Initialize variable intention action

プレリクエストスクリプトでは、 HTTP クライアント暗号 API を使用して、SHA-1、SHA-256、SHA-512、MD5 などの暗号化ハッシュ関数に基づいて HTTP 署名を生成し、変数としてリクエストに渡すこともできます。 例:

< {% const signature = crypto.hmac.sha256() .withTextSecret(request.environment.get("secret")) // get variable from http-client.private.env.json .updateWithText(request.body.tryGetSubstituted()) .digest().toHex(); request.variables.set("signature", signature) const hash = crypto.sha256() .updateWithText(request.body.tryGetSubstituted()) .digest().toHex(); request.variables.set("hash", hash) %} POST https://httpbin.org/post X-My-Signature: {{signature}} X-My-Hash: {{hash}} Content-Type: application/json

動的変数

動的変数は、リクエストを実行するたびに値を生成します。 それらの名前は $ で始まります:

  • $uuid または $random.uuid: 普遍的に一意の識別子を生成します (UUID-v4)

  • $timestamp: 現在の UNIX タイムスタンプを生成します

  • $isoTimestamp: UTC タイムゾーンの ISO-8601 形式で現在のタイムスタンプを生成します。

  • $randomInt: 0 〜 1000 のランダムな整数を生成します。

  • $random.integer(from, to): from (両端を含む) と 終了 (両端を含まない) の間のランダムな整数を生成します (たとえば、random.integer(100, 500))。 パラメーターを指定しない場合は、0 ~ 1000 のランダムな整数が生成されます。

  • $random.float(from, to): from (両端を含む) と 終了 (両端を含まない) の間のランダムな浮動小数点数を生成します (たとえば、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 クライアントのみを使用してアクセスできる IntelliJ IDEA 組み込み Web サーバーに置き換えられます。 この変数は、GraphQL および WebSocket の で使用されます。

URL パラメーターや本文などのリクエスト部分で動的変数を使用します。

POST http://localhost/api/post?id={{$uuid}} { "time": {{$timestamp}}, "price": {{$random.integer(10, 1000)}}, }

事前リクエストハンドラースクリプトと応答ハンドラースクリプトでは、通常の JavaScript 変数と同様に、波括弧なしで使用します。 例:

< {% const longUUID = $random.uuid request.variables.set("generatedQuery", longUUID) %} GET https://examples.http-client.intellij.net/get ?generatedQuery={{generatedQuery}} > {% client.log(`Today is ${$isoTimestamp}`) %}

より動的な変数

住所、色、会社名など、他の型のランダムデータを生成できます。 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 faker ライブラリ(英語・アメリカ合衆国)のデフォルトロケールを使用してランダムデータを生成します。 例:次のリクエスト

@test = {{$random.address.fullAddress}} ### < {% console.log($random.address.fullAddress) %} GET https://examples.http-client.intellij.net/get

デフォルトロケールに従ってフォーマットされたランダムな住所を生成します: Apt. 123 Main Street, Springfield, IL 12345

地域固有のデータを生成するには、 locale 対応しているロケールのいずれかを明示的に指定できます:

@testName = {{$random.locale.name.fullName("fr")}} @testAddress = {{$random.locale.address.fullAddress("fr")}} @testPhone = {{$random.locale.phoneNumber.cellPhone("fr")}} < {% console.log("Name:", client.variables.file.get("testName")) console.log("Address:", client.variables.file.get("testAddress")) console.log("Phone:", client.variables.file.get("testPhone")) %} POST https://httpbin.org/post Content-Type: application/json { "name": "{{testName}}", "address": "{{testAddress}}", "phone": "{{testPhone}}" }

ランダムシードを指定することで、ローカライズされたランダム値を決定的にできます。 同じシードとロケールを使うと、毎回同じ値が生成されます。

次の例では、 12 がランダムジェネレーターを初期化するために使用するランダムシードです:

@testName = {{$random.locale.name.fullName("fr", 12)}}

システム環境変数

HTTP クライアントでは、オペレーティングシステムの環境変数を使用できます。

それらにアクセスするには、 {{$env.ENV_VAR}} 構文を使用してください。ここで ENV_VAR は環境変数の名前です。 事前リクエストハンドラースクリプトと応答ハンドラースクリプトでは、通常の JavaScript 変数と同様に、波括弧なしで使用します。 例:

GET http://localhost:63345/{{$env.USER}} > {% const myUser = $env.USER client.log(myUser) %}

変数名の入力を開始すると、使用可能な変数の提案が表示されます。

HTTP クライアントのシステム環境変数

変数内のコレクションを反復処理する

環境変数および 事前リクエストスクリプトで初期化される変数は、例えば、ID またはユーザー名のリストのような要素のコレクションを表すことができます。 このような変数が HTTP リクエストで使用されると、HTTP クライアントはこのリストの各要素に対して個別のリクエストを送信します。 IntelliJ IDEA は、このような変数に対して JSONPath 式もサポートしており、特定の要素または要素のサブセットにアクセスし、それぞれに対してリクエストを送信できます。

たとえば、ID によって書籍に関する情報を返すサーバーがある場合、JSON 配列 [1,2,3,4,5] を変数 id に割り当て、それを本文または URL 部分で使用できます。

< {% request.variables.set("id", [1,2,3,4,5]) %} GET http://localhost:8080/books/{{id}}

HTTP クライアントは、各リクエストのコレクションから後続の項目に変数を置き換えながら、5 つの連続したリクエストを送信します。

同様に、リクエスト本文でコレクションを使用することもできます。 次の例では、HTTP クライアントは本文に異なる値を持つ 3 つのリクエストを送信します: name: Alicename: Bobname: Charlie

< {% request.variables.set("name", ["Alice", "Bob", "Charlie"]) %} GET http://localhost:8080/users Content-Type: application/json { "name": {{name}} }

JSONPath を使用すると、配列内の JSON オブジェクトの特定のパラメーターにアクセスすることもできます。 例: 次のクエリでは、HTTP クライアントは、 users という変数内のすべてのオブジェクトの各 name 値に対するリクエストを送信します。

変数で JSONPath を使いやすくするために、IntelliJ IDEA は、既知の JSON オブジェクトパラメーターの補完、検証、ハイライトなどの JSONPath コーディング支援を提供します。 JSONPath 言語は、 動的変数を除くすべての HTTP クライアント変数 (二重の波括弧で囲まれている) に 挿入されます

GET http://localhost:8080/users/{{users[*].name}}
変数内のコレクションを反復処理する

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

request.iteration() の例

### Use request.iteration() < {% request.variables.set("clients", [ // test data {"id": 1, "firstName": "George", "lastName": "Franklin", balance: 100}, {"id": 2, "firstName": "John", "lastName": "Doe", balance: 1500}, {"id": 3, "firstName": "Eduardo", "lastName": "Rodriquez", balance: 10} ]) %} POST https://examples.http-client.intellij.net/post Content-Type: application/json { "clientId": {{$.clients..id}}, "firstName": "{{$.clients..firstName}}", "lastName": "{{$.clients..lastName}}", "balance": "{{$.clients..balance}}" } > {% client.log(request.iteration()) // prints 0 for 1st request, 1 for 2nd, 2 for 3rd let current = request.variables.get("clients")[request.iteration()] client.test(`Account ${current.lastName} has initial balance ${current.balance}`, () => { let responseBalance = jsonPath(response.body, "$.json.balance") client.assert(responseBalance == current.balance) }) %}

事前リクエストスクリプトおよび応答ハンドラースクリプトのループ内でインデックスによって値を取得するには、 request.templateValue(Integer) メソッドを使用します。

request.templateValue() の例

### Use templateValue < {% request.variables.set("books", [{ "books": { "title": "Ulysses", "year": 1922 } }, { "books": { "title": "Dune", "year": 1965 }}]) %} GET http://localhost:8080/books Content-Type: application/json { "bookTitle": "{{$.books..title}}", "bookYear": "{{$.books..year}}" } > {% let bookTitle = request.templateValue(0) client.log(`book title is: ${bookTitle}`) // prints Ulysses in 1st request, Dune in 2nd client.log(request.iteration()) let bookYear = request.templateValue(1) client.log(`book year is: ${bookYear}`) // prints 1922 in 1st request, 1965 in 2nd %}
2026 年 3 月 30 日