PhpStorm 2026.3 Help

応答処理の例

このトピックでは、いくつかの HTTP レスポンス処理の例を調べます。 例を試してみるには、 auth-requests および test-responses 要求のコレクションを調べましょう。

レスポンスのヘッダー、本文、コンテンツタイプを確認する

この例では、以下の点を検証するためのテストをいくつか作成します。

  • リクエストは正常に実行されます。つまり、レスポンスのステータスは 200 です。

  • ヘッダーはレスポンスボディ内で受信されます。

  • レスポンスのコンテンツタイプは アプリケーション /JSON です。

テストを作成するには、 クライアントオブジェクトの test メソッドを呼び出します。 テスト内では、 client オブジェクトの assert メソッドを呼び出して特定の条件をアサートし、 応答オブジェクトのさまざまなプロパティを参照して検証できます。

// Check response status, headers, and content-type GET https://httpbin.org/get > {% client.test("Request executed successfully", function() { client.assert(response.status === 200, "Response status is not 200"); }); client.test("Headers option exists", function() { client.assert(response.body.hasOwnProperty("headers"), "Cannot find 'headers' option in response"); }); client.test("Response content-type is json", function() { var type = response.contentType.mimeType; client.assert(type === "application/json", "Expected 'application/json' but received '" + type + "'"); }); %}

グローバル変数を使用する

この例では、受信したレスポンスから値を グローバル変数に格納し、後続のリクエストで使用できるようにします。

最初のリクエストには、受信したレスポンス本文の認証トークンを client.global の auth_token 変数に保存するレスポンスハンドラースクリプトが含まれます。 これを実現するには、 client.global.set(VariableName, VariableValue) 構造を使用します。 VariableValue 引数として、サーバーから返された レスポンス本文の token フィールドの値を使用します。 この値は、 "auth_token" 変数に割り当てられます。

POST https://examples.http-client.intellij.net/body-echo Content-Type: application/json { "token": "my-secret-token" } > {% client.global.set("auth_token", response.body.token); %}

リクエストが実行されると、 auth_token 変数は後続のリクエスト ({{auth_token}} 変数内) および応答ハンドラースクリプト (client.global.get("auth_token") 構造を使用) からアクセスできるようになります。

//Accessing a variable GET https://examples.http-client.intellij.net/headers Authorization: Bearer {{auth_token}}

応答ヘッダーから値を取得するには、 headers オブジェクトの valueOf メソッドを使用します。 同じ名前のヘッダーが複数受信された場合は、代わりに valuesOf メソッドを使用してください。 これにより、すべてのレスポンスヘッダー値の配列が返されます。

POST https://httpbin.org/cookies //Saving a cookie from the first Set-Cookie header > {% client.global.set("my_cookie", response.headers.valuesOf("Set-Cookie")[0]); %}

この例では、クッキーを返すリクエストを送信し、レスポンスハンドラースクリプトを使用してレスポンスからそのクッキーを抽出し、その値を グローバル変数として保存し、後続のリクエストで再利用します。

エンドポイントがレスポンスで SOCS クッキーを返すとします。 response.cookiesByName("SOCS") メソッドを使用して、レスポンスからこのクッキーを見つけて抽出します。

Cookie の値をグローバル変数(client.global.set() )として保存することで、後続のリクエストで再利用できます。 次のリクエストでは、 Cookie ヘッダー内の {{SOCS_COOKIE}} を参照して、抽出した値を送信します。

GET https://www.google.com > {% const cookie = response.cookiesByName("SOCS")[0]; if (cookie) { client.global.set("SOCS_COOKIE", cookie.value); console.log("Saved SOCS_COOKIE =", cookie.value); } else { console.log("SOCS cookie not found"); } %} ### // Request 2 — Send the saved cookie to a test endpoint that echoes cookies GET https://httpbin.org/cookies Cookie: SOCS={{SOCS_COOKIE}}

イベントストリームの各行を処理する

イベントストリームをサブスクライブすると、新しいデータが利用可能になると、サーバーがクライアントにイベントを自動的に送信します。 このデータは、サーバー送信イベントまたは改改行コード JSON(NDJSON) の形式にすることができます。 PhpStorm では、HTTP クライアント response.body.onEachLine メソッドを使用して、このイベントストリームの各行で関数を呼び出すことができます。

金価格に関する情報を定期的に送信するサーバーがあるとします。 この例では、次のことを行う応答ハンドラースクリプトを作成しましょう。

  1. サーバーから受信したデータの各チャンク(JSON オブジェクト)を取得し、価格値をログに記録します。 リクエストを実行すると、 サービス ツールウィンドウの レスポンスハンドラー タブでログに記録された情報を表示できます。

  2. イベント数が 10 を超えると、受信したデータの処理を停止します。 これによりイベントストリームのサブスクライブが解除されるわけではないことに注意してください。HTTP 接続が開いている限り、イベントは引き続き受信されます (コンソール タブ (サービス ツールウィンドウ) を確認してください)。

  3. 取得したデータチャンクをテスト: 価格が 45 未満の場合はテストが失敗します。 サービス ツールウィンドウの テスト タブでテスト結果を表示できます。

GET localhost/stocks/subscribe?symbol=GOLD > {% var updatesCount = 0; response.body.onEachLine( (symbolUpdate, unsubscribe) => { updatesCount++; client.log(symbolUpdate.pricePresentation); if (updatesCount > 10) { unsubscribe(); return; } client.test("Price test " + updatesCount, () => { client.assert(symbolUpdate.lastPrice >= 45, "Price must be >= 45"); client.log(symbolUpdate.pricePresentation); }); } ) %}

DOM API を使用して XML レスポンスを処理する

レスポンスの Content-Type が XML (たとえば application/xml や text/xml) の場合、HTTP クライアントは response.body を DOM Document として公開します。 レスポンスを解析および検証するには、 サポートされている DOM メソッドを直接使用できます。 文字列操作や正規表現を適用する場合は、 new XMLSerializer().serializeToString(response.body) を使用して DOM Document を文字列にシリアル化できます。

XML レスポンスの検証

サーバーが朝食メニューを XML 形式で返すとします。 この例では、レスポンスハンドラースクリプトが XML ドキュメントから値を抽出し、テストを使用して検証します。

GET https://www.w3schools.com/xml/simple.xml > {% client.test("First food item is Belgian Waffles", () => { const foods = response.body.getElementsByTagName("food"); client.assert(foods.length > 0, "No food elements found"); const firstFood = foods[0]; const name = firstFood .getElementsByTagName("name")[0] .textContent .trim(); const calories = firstFood .getElementsByTagName("calories")[0] .textContent .trim(); client.log("Name:", name); client.log("Calories:", calories); client.assert(name === "Belgian Waffles", "Unexpected food name: " + name); client.assert(calories === "650", "Unexpected calories: " + calories); }); %}

このスクリプトは、DOM Document 形式の response.body を解析し、以下の処理を実行します。

  • getElementsByTagName() を使用してすべての food 要素を取得します。

  • 少なくとも 1 つの food 要素が存在することを保証します。

  • 最初の food 要素を選択します。 次に、 textContent を使用して、そのネストされた name および calories 要素のテキスト値を抽出します。

  • client.assert() を使用して、抽出された値が期待値と一致することを確認します。

2026 年 11 月 9 日