応答処理の例
このトピックでは、いくつかの HTTP レスポンス処理の例を調べます。例を試してみるには、auth-requests および test-responses 要求のコレクションを調べましょう。
レスポンスのヘッダー、本文、コンテンツタイプを確認する
この例では、以下の点を検証するためのテストをいくつか作成します。
要求は正常に実行されます。つまり、応答状況は 200 です。
ヘッダーはレスポンスボディ内で受信されます。
レスポンスのコンテンツタイプはアプリケーション /JSON です。
テストを作成するには、クライアントオブジェクトの test メソッドを呼び出します。テスト内では、client オブジェクトの assert メソッドを呼び出して特定の条件をアサートし、応答オブジェクトのさまざまなプロパティを参照して検証できます。
グローバル変数を使用する
この例では、受信したレスポンスから値をグローバル変数に格納し、後続のリクエストで使用できるようにします。
最初のリクエストには、受信したレスポンス本文の認証トークンを client.global の auth_token 変数に保存するレスポンスハンドラースクリプトが含まれます。これを実現するには、client.global.set(VariableName, VariableValue) 構造を使用します。VariableValue 引数として、サーバーから返されたレスポンス本文の token フィールドの値を使用します。この値は、"auth_token" 変数に割り当てられます。
リクエストが実行されると、auth_token 変数は後続のリクエスト ({{auth_token}} 変数内) および応答ハンドラースクリプト (client.global.get("auth_token") 構造を使用) からアクセスできるようになります。
レスポンスヘッダーから値を取得するには、headers オブジェクトの valueOf メソッドを使用します。同じ名前のヘッダーが複数受信された場合は、代わりに valuesOf メソッドを使用してください。これにより、すべてのレスポンスヘッダー値の配列が返されます。
クッキーをグローバル変数として保存する
この例では、クッキーを返すリクエストを送信し、レスポンスハンドラースクリプトを使用してレスポンスからそのクッキーを抽出し、その値をグローバル変数として保存し、後続のリクエストで再利用します。
エンドポイントがレスポンスで SOCS クッキーを返すとします。 response.cookiesByName("SOCS") メソッドを使用して、レスポンスからこのクッキーを見つけて抽出します。
Cookie の値をグローバル変数(client.global.set())として保存することで、後続のリクエストで再利用できます。次のリクエストでは、Cookie ヘッダー内の {{SOCS_COOKIE}} を参照して、抽出した値を送信します。
イベントストリームの各行を処理する
イベントストリームをサブスクライブすると、新しいデータが利用可能になると、サーバーがクライアントにイベントを自動的に送信します。このデータは、サーバー送信イベントまたは改改行コード JSON(NDJSON) の形式にすることができます。PhpStorm では、HTTP クライアント response.body.onEachLine メソッドを使用して、このイベントストリームの各行で関数を呼び出すことができます。
金価格に関する情報を定期的に送信するサーバーがあるとします。この例では、次のことを行う応答ハンドラースクリプトを作成しましょう。
サーバーから受信したデータの各チャンク(JSON オブジェクト)を取得し、価格値をログに記録します。リクエストを実行すると、サービスツールウィンドウのレスポンスハンドラータブでログに記録された情報を表示できます。
イベント数が 10 を超えると、受信データの処理を停止します。これにより、イベントストリームのサブスクライブが解除されないことに注意してください。HTTP 接続が開いている限り、イベントの受信を継続します(サービスツールウィンドウのコンソールタブを確認してください)。
取得したデータのチャンクをテストします。価格が 45 未満の場合、テストは失敗します。テスト結果は、サービスツールウィンドウのテストタブで確認できます。
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 ドキュメントから値を抽出し、テストを使用して検証します。
このスクリプトは、DOM Document 形式の response.body を解析し、以下の処理を実行します。
getElementsByTagName()を使用してすべてのfood要素を取得します。少なくとも 1 つの
food要素が存在することを保証します。最初の
food要素を選択します。次に、textContentを使用して、そのネストされたnameおよびcalories要素のテキスト値を抽出します。client.assert()を使用して、抽出された値が期待値と一致することを確認します。
関連ページ:
HTTP クライアント
HTTP クライアントプラグインを使用すると、PhpStorm コードエディターで HTTP リクエストを直接作成、編集、実行できます。HTTP リクエストを作成して実行する必要がある場合、主に 2 つのユースケースがあります。RESTful Web サービスを開発していて、それが期待どおりに機能し、仕様に準拠してアクセス可能であり、正しく応答することを確認したい場合。RESTful Web サービスに対応するアプリケーションを開発している場合。この場合、開発を開始する前にサービスへのアクセスと...
HTTP クライアントリファレンス
オブジェクトは、HTTP クライアントセッションのメタデータへのアクセスを提供し、HTTP レスポンスと出力内のテキストをで変換します。このオブジェクトは PhpStorm が起動するたびに再初期化され、PhpStorm の再起動間ではデータは保持されません。オブジェクトは、変数ストレージとして機能するネストされたグローバルオブジェクトも公開します。メソッド:テスト名前がで本体がのテストを作成します。すべてのテストは、応答ハンドラースクリプトの後に実行されます。テスト結果は、サービスツールウィ...